0 Java安全模型图,和 策略与权限关系:
上图可知, 策略文件和安全管理器需要一起合作才能实现安全管理功能, 策略文件里面的内容的多少决定操作权限的多寡。
1 介绍策略文件:
做一个简单demo, 感受下策略文件相对于权限控制:
第一步,定义一个简单类。
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,启动默认的安全管理器(这里你应该也猜到了,策略必须和安全管理器一起合作才能起作用)
第四步,查看输出
异常,提示本应用对d:/testPolicy.txt这个文件没有写的权限。
修改一下上面的myPolicy.txt文件,如下
grant codeBase "file:D:/workspace/TestPolicy/bin/*" { permission java.io.FilePermission "d:/testPolicy.txt", "read,write"; };
再次运行,没有报错。
这基本就是安全管理器和策略文件搭配下实现对目标资源控制的一个简单流畅,安全管理器通过访问策略文件来确定对目标文件有多少权限,策略文件(本例中的myPolicy.txt)在jvm中对应着java.security.Policy类,
总结为:
java对应用程序的访问控制策略是由抽象类java.security.Policy的一个子类的单例所表示,
任何时候,每个应用程序实际上只有一个Policy对象,Policy对象对应着策略文件。
类装载器利用这个Policy对象来帮助他们决定,在把一段代码导入虚拟机时应该给予什么权限。
相关推荐
java之jvm学习笔记九(策略文件)
前 言 致 谢 第一部分 走近Java 第1章 走近Java / 2 1.1 概述 / 2 1.2 Java技术体系 / 3 1.3 Java发展史 / 5 1.4 展望Java技术的未来 / 9 1.4.1 模块化 / 9 1.4.2 混合语言 / 9 1.4.3 多核并行 / 11 ...
JVM,JVM内存结构、HotSpot 虚拟机对象探秘、垃圾收集策略与算法、HotSpot 垃圾收集器、内存分配与回收策略、JVM 性能调优、类文件结构。。
内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行。Java具有简单、...
包括JVM执行过程、虚拟机类加载机制、运行时数据区、GC、类加载器、内存分配与回收策略等,全套视频加资料高清无密码 第1讲 说在前面的话 免费 00:05:07 第2讲 整个部分要讲的内容说明 免费 00:06:58 第3讲...
JVM负责装载class文件并执行,因此,首先是JDK如何将Java代码编译为class文件、如何装载class文件及如何执行class,将源码编译为class文件的实现取决于各个JVM实现或各种源码编译器。class文件通常由类加载器...
最新jvm面试题合集,涵盖JVM运行时数据区、垃圾回收算法、垃圾回收器、类加载机制、JIT即时编译等核心知识点及常见面试题,一书在手,天下...类加载机制:JVM通过类加载器加载类文件,将其转换为可执行的二进制格式。
6.2.客户机:通过在JNLP文件中设置参数来调整客户端JVM JNLP中参数:initial-heap-size和max-heap-size 这可以在framework的RequestManager中生成JNLP文件时加入上述参数,但是这些值是要求根据客户机的硬件状态...
JVM中默认安全策略为128位AES加密,微信企业号中的加密长度超过了JVM中所能允许的长度,因此会报错,需要使用无限制的JCE
概述 Java内存区域 GC与内存分配策略 虚拟机性能监控与故障处理工具 类文件结构 类加载机制 字节码执行引擎
用于开发用于生成Java .class文件的工具。 -代码生成库在运行时创建Java类,而无需编译器的帮助。 类似于BiteScript的字节码生成库。 垃圾收集器 JVM的垃圾收集器。 -为Java应用程序提供连续,不间断的操作。 -...
第2章 字节码文件,深入剖析字节码文件的全部组成结构,以及javap和jbe可视化反解析工具的使用。 第3章 类的加载、解释、编译,本章节带你深入理解类加载器的分类、范围、双亲委托策略,自己手写类加载器,理解字节...
面对不同的代,采用不同的回收策略。 而年轻代又可以分为1个Eden和2个Survivor。对于Eden,大多数对象都是先在此区域开辟空间,存储年轻对象的实例数据。Eden相对于Old带,空间是比较小的。所以对象数据不断地在此...
该文件可简化日志记录策略。 启动应用程序。 demolitionReport.config示例:-文件开始-报告onStartup文件startup.log大小20k {“” heap.max“:” memory.heap.max“,” heap.used“:” memory.heap.used“,...
内容简介: 本书作者曾因本书荣获专业技术杂志《java report》评选的优秀作者奖。细心的读者可以从网上找到许多对本书第1版的赞誉。 作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容...
9_多线程-yield-join-daemon-synchronized; o, E; \* I: E2 W 10_多线程-同步代码块-同步方法 11_多线程-生产消费问题 12_多线程-死锁问题 13_字符集问题' X4 e; v9 q' U2 W% f" l7 f$ F 14_String-StringBuffer-...
9_Netty读写检测机制与长连接要素 10_Netty对WebSocket的支援 11_Netty实现服务器端与客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息详解 14_Protobuf完整实例详解 15_Protobuf集成Netty与多...
7_Netty的Socket编程详解 8_Netty多客户端连接与通信 9_Netty读写检测机制与长连接要素 10_Netty对WebSocket的支援 11_Netty实现服务器端与客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息...
尽管为堆栈机生成代码很简单,但是复杂的类文件格式以及考虑到Java语言设计JVM的事实使这一任务更加恶化。 实际上,JVM缺少支持Oberon功能所需的许多原语,特别是: 值类型 通过参考评估策略 过程变量(指向函数的...
1.对文件进行操作的类 21 2.对String对象操作的类 24 3. 对时间处理的类 25 4. 对系统处理的类: 26 5. 数据运算的类 27 6. 正则表达式 27 第七章 异常处理 32 第八章Oracle数据库基础 32 第九章...