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对象来帮助他们决定,在把一段代码导入虚拟机时应该给予什么权限。

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

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

  • 相关阅读:
    各个数字类型取值范围以及推理
    进制转换原理
    位运算操作符_
    读取文件内容
    java中thread的start()和run()的区别
    二进制的负数转换
    位运算符号
    Hadoop的辉煌还能延续多久?
    Hadoop 新 MapReduce 框架 Yarn 详解
    MapReduce工作原理讲解
  • 原文地址:https://www.cnblogs.com/lijia0511/p/4973847.html
Copyright © 2011-2022 走看看