JavaTM 2 Platform
Standard Ed. 5.0

java.security
类 Policy

java.lang.Object
  继承者 java.security.Policy

public abstract class Policy
extends Object

这是一个用于表示 Java 应用环境的系统安全策略(为来自各种源的代码指定可用的权限)的抽象类。也就是说,安全策略通过一个 Policy 子类提供此 Policy 类中抽象方法的实现来表示。

实际上在任意给定时间只有一个 Policy 对象。

Policy 对象利用的策略信息的源位置由 Policy 实现决定。策略配置可以被存储为(例如)纯 ASCII 文件、Policy 类的序列化的二进制文件,或数据库。

当前安装的 Policy 对象可以通过调用 getPolicy 方法获取,可以通过调用 setPolicy 方法更改(通过具有重置 Policy 权限的代码)。

refresh 方法促使 policy 对象刷新/重新加载其当前配置。

这是依赖于实现的。例如,如果 policy 对象在配置文件中存储其策略,调用 refresh 将导致它重新读取策略配置文件。刷新的策略对特定 ProtectionDomain 中的类可能无效。这与 Policy 提供程序的 implies 方法的实现和 PermissionCollection 的缓冲策略有关。

通过将 "policy.provider" 的安全属性(在 Java 安全属性文件中)的值设置为所需的 Policy 实现类的完全限定名,可以更改默认的 Policy 实现。Java 安全属性文件位于名为 <JAVA_HOME>/lib/security/java.security 的文件中,其中 <JAVA_HOME> 指的是安装 JDK 的目录。

另请参见:
CodeSource, PermissionCollection, SecureClassLoader

构造方法摘要
Policy()
           
 
方法摘要
abstract  PermissionCollection getPermissions(CodeSource codesource)
          评估全局策略并返回 PermissionCollection 对象,该对象为来自指定代码源的代码指定所允许的权限集合。
 PermissionCollection getPermissions(ProtectionDomain domain)
          评估全局策略并且返回 PermissionCollection 对象,该对象指定所允许的权限集合(给出了保护域的特征)。
static Policy getPolicy()
          返回安装的 Policy 对象。
 boolean implies(ProtectionDomain domain, Permission permission)
          评估授予 ProtectionDomain 的权限的全局策略并测试是否授予了该权限。
abstract  void refresh()
          刷新/重新加载策略配置。
static void setPolicy(Policy p)
          设置系统级 Policy 对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Policy

public Policy()
方法详细信息

getPolicy

public static Policy getPolicy()
返回安装的 Policy 对象。此值不应该被缓存,因为它可能通过调用 setPolicy 更改。此方法首先用 SecurityPermission("getPolicy") 权限作为参数调用 SecurityManager.checkPermission 来保证可以获取 Policy 对象。

返回:
安装的 Policy。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许获取 Policy 对象。
另请参见:
SecurityManager.checkPermission(Permission), setPolicy(java.security.Policy)

setPolicy

public static void setPolicy(Policy p)
设置系统级 Policy 对象。此方法首先用 SecurityPermission("setPolicy") 权限作为参数调用 SecurityManager.checkPermission 来保证可以设置 Policy。

参数:
p - 新的系统 Policy 对象。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置 Policy。
另请参见:
SecurityManager.checkPermission(Permission), getPolicy()

getPermissions

public abstract PermissionCollection getPermissions(CodeSource codesource)
评估全局策略并返回 PermissionCollection 对象,该对象为来自指定代码源的代码指定所允许的权限集合。

参数:
codesource - 与调用方关联的 CodeSource。此参数封装了代码的初始位置(代码的来源)及其签名者的公钥。
返回:
根据策略允许来自 codesource 的代码使用的权限集合。返回的权限集合必须是新的不可变实例并且它必须支持不同种类的 Permission 类型。

getPermissions

public PermissionCollection getPermissions(ProtectionDomain domain)
评估全局策略并且返回 PermissionCollection 对象,该对象指定所允许的权限集合(给出了保护域的特征)。

参数:
domain - 与调用方关联的 ProtectionDomain。
返回:
根据策略允许给 domain 的权限集合。返回的权限集合必须是新的不可变实例并且它必须支持不同种类的 Permission 类型。
从以下版本开始:
1.4
另请参见:
ProtectionDomain, SecureClassLoader

implies

public boolean implies(ProtectionDomain domain,
                       Permission permission)
评估授予 ProtectionDomain 的权限的全局策略并测试是否授予了该权限。

参数:
domain - 要测试的 ProtectionDomain
permission - 要测试其暗含权限的 Permission 对象。
返回:
如果 "permission" 是授予此 ProtectionDomain 的真子集,则返回 true。
从以下版本开始:
1.4
另请参见:
ProtectionDomain

refresh

public abstract void refresh()
刷新/重新加载策略配置。此方法的行为取决于实现。例如,对基于文件的策略调用 refresh 将导致重新读取该文件。


JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策