druid 源码学习五 -AccessController 探索
一、DruidDataSource 初始化
紧接着初始化方法最后段代码,我们会发现这里创建类多个线程,
比如 createAndLogThread,createAndStartCreatorThread、createAndStartDestroyThread。
发现这些都是定义的内部类。再展开 DruidDataSource 类的整体结构
二、DruidDataSource 类结构
另外这段值得注意的是 registerMbean()方法;进入该方法,可见
有点蒙圈,AccessController 是啥?再往下 ObjectName 又是要干啥?为了搞懂这段代码什么意思,继续探索其源代码。
三、AccessController 类
借助 Jdk 帮助文档:
AccessController 类用于访问控制操作和决策。
更具体地说,AccessController 类用于三个目的:
根据当前有效的安全策略来决定是否允许或拒绝对关键系统资源的访问;
将代码标记为“特权”,从而影响随后的访问确定 ;
为了获得当前呼叫上下文的“快照”,可以针对保存的上下文进行来自不同上下文的访问控制决定。
核心方法:
大致理解
类 java.security.AccessController 是提供了一个默认安全策略执行机制,在线程调用方法时,会使用栈检查决定潜在不安全操作是否被允许。AccessController 核心方法是 checkPermission 静态方法,方法决定一个特定的操作能否被允许。如果访问请求被允许,checkPermission 会安静的返回,如果拒绝,将会抛出一个 AccessControlException。
参考:
https://blog.csdn.net/ioteye/article/details/109921371
JDK 帮助文档
版权声明: 本文为 InfoQ 作者【Nick】的原创文章。
原文链接:【http://xie.infoq.cn/article/a9650c3e5fc3b7cc08d447c89】。文章转载请联系作者。
评论