zoukankan      html  css  js  c++  java
  • java jvm学习笔记九(策略文件)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8271407

                          课程源码:http://download.csdn.net/detail/yfqnihao/4866503

                          什么是java的策略,什么又是策略文件。

                          今天我换一下笔记的方式,不是直接讲概念,而是先来做一个小例子,相信你做完这个例子之后再看我对例子的讲解,你对策略,策略文件,会豁然开朗的感觉。

                           例子很简单,简单的才是大家的,下面跟着我(你完全可以copy我的代码)。

                            第一步,定义一个简单类。

    package com.yfq.test;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class TestPolicy {
    
    
            public static void main(String[] args) {
                FileWriter writer;
                try {
                    writer = new FileWriter("d:/testPolicy.txt");
                    writer.write("hello1");
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
    }


                                  第二步,定义一个简单的策略文件,我们放到工程的类路径下(src文件夹里),名字为myPolicy.txt

    grant codeBase "file:D:/workspace/TestPolicy/bin/*" {   
        permission java.io.FilePermission "d:/testPolicy.txt", "read";   
    }; 

    我简单的来说一下这个文件的作用

    第一行:grant codeBase "file:D:/workspace/TestPolicy/bin/*"意思是给D:/workspace/TestPolicy/bin/*给这个路径下的所有文件定义权限,星号是统配符,所有的意思

    第二行:permission java.io.FilePermission "d:/testPolicy.txt", "read";意思是d:/testPolicy.txt这个文件 只分配读的权限。

                                第三步,运行,在cmd窗口输入(运行不起来,说明jdk的环境变量没有配置好,去配一下)
    java -classpath D:/workspace/TestPolicy/bin -Djava.security.manager -Djava.security.policy=D:/workspace/TestPolicy/src/myPolicy.txt com.yfq.test.TestPolicy

    这句话的意思,把当前的类路径指定为D:/workspace/TestPolicy/bin,启动默认的安全管理器(这里你应该也猜到了,策略必须和安全管理器一起合作才能起作用),设置安全策略文件的位置(关于策略文件的安装是有多种方式的,这里我们是在windows下,如果你有兴趣可以自己再多摸索)。

                               第四步,查看输出

    这里报出了异常,提示本应用对d:/testPolicy.txt这个文件没有写的权限。

    修改一下上面的myPolicy.txt文件,如下

    grant codeBase "file:D:/workspace/TestPolicy/bin/*" {   
        permission java.io.FilePermission "d:/testPolicy.txt", "read,write";   
    }; 

    再次运行,没有报错了。

    好了实验成功,或许你会疑问,这个有鸟用啊,不要急,在下一节中,我们会详细的讲,现在我做一下简单的介绍,这个策略文件(本文中为myPolicy.txt)在java中对应着一个类,叫java.security.Policy(策略),这是一个神奇的类,有了它,你可以定义自己代码的权限,当然它还可以结合我们笔记四讲到的安全管理器。而你现在只需要记住一句话:

    java对应用程序的访问控制策略是由抽象类java.security.Policy的一个子类的单例所表示,任何时候,每个应用程序实际上只有一个Policy对象,Policy对象对应着策略文件。类装载器利用这个Policy对象来帮助他们决定,在把一段代码导入虚拟机时应该给予什么权限。

    如果你之前有稍微听过策略这个概念,希望看完本文有给你豁然开朗的感觉

    申明:以上实验有参照网上其他作者的内容,在此只做学习交流之用!

  • 相关阅读:
    1024X768大图 (Wallpaper)
    (Mike Lynch)Application of linear weight neural networks to recognition of hand print characters
    瞬间模糊搜索1000万基本句型的语言算法
    单核与双核的竞争 INTEL P4 670对抗820
    FlashFTP工具的自动缓存服务器目录的功能
    LDAP over SSL (LDAPS) Certificate
    Restart the domain controller in Directory Services Restore Mode Remotely
    How do I install Active Directory on my Windows Server 2003 server?
    指针与指针变量(转)
    How to enable LDAP over SSL with a thirdparty certification authority
  • 原文地址:https://www.cnblogs.com/lijia0511/p/4973847.html
Copyright © 2011-2022 走看看