shansun123 发表于 2013-1-27 13:05:26

AccessController.doPrivileged 小记


原文:http://blog.csdn.net/teamlet/archive/2007/10/01/1809165.aspx
AccessController.doPrivileged是一个在AccessController类中的静态方法,允许在一个类实例中的代码通知这个AccessController:它的代码主体是享受"privileged(特权的)",它单独负责对它的可得的资源的访问请求,而不管这个请求是由什么代码所引发的。
这就是说,一个调用者在调用doPrivileged方法时,可被标识为 "特权"。在做访问控制决策时,如果checkPermission方法遇到一个通过doPrivileged调用而被表示为 "特权"的调用者,并且没有上下文自变量,checkPermission方法则将终止检查。如果那个调用者的域具有特定的许可,则不做进一步检查,checkPermission安静地返回,表示那个访问请求是被允许的;如果那个域没有特定的许可,则象通常一样,一个异常被抛出。
一、"特权"特性的正常使用如下所示:
1、如果你不需要从"特权"块内返回一个值,按下列代码去做:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background-color: #e6e6e6; padding-bottom: 4px; width: 876px; padding-top: 4px;">somemethod() {

      ...normal code here...

      AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
                    // privileged code goes here, for example:
                    System.loadLibrary("awt");
                    return null; // nothing to return
            }
      });

      ...normal code here...

页: [1]
查看完整版本: AccessController.doPrivileged 小记