public abstract class Policy extends Object
在运行时在任何给定的时间内只有一个策略对象。政策对象可以通过调用setPolicy方法安装。安装的政策对象可以通过调用getPolicy方法得到的。
如果没有政策对象已安装在运行时,调用getPolicy安装的默认策略实现的一个实例(这一抽象类的默认子类实现)。默认的政策的实施,可以通过设置的policy.provider安全属性的值为所需的策略子类实现的完全限定名称改变。
应用程序代码可以直接子类策略提供一个自定义的实现。此外,一个政策的对象的一个实例可以通过调用其中的getInstance工厂方法与标准型构造。默认类型是“javapolicy”政策。
一旦政策实例已安装(或默认,或致电setPolicy),java运行时调用它的implies方法时需要确定是否执行代码(封装在一个ProtectionDomain)可以执行要保护操作。如何检索其策略数据的策略数据取决于策略实现本身。政策是用来存储数据的,例如,在一个平坦的ASCII文件,在一个序列化的二进制文件的策略类,或在数据库中。
的refresh方法使政策对象刷新/重新加载数据。此操作是依赖于实现的。例如,如果政策对象存储其数据配置文件,调用refresh会使它重新读取配置策略文件。如果不支持刷新操作,则此方法不做任何操作。注意,刷新的政策不可能在一个特定的保护范围对类的影响。这是依赖的implies方法的政策提供者的实现及其PermissionCollection缓存策略。
| Modifier and Type | Class and Description |
|---|---|
static interface |
Policy.Parameters
这表示策略参数的一个标记接口。
|
| Modifier and Type | Field and Description |
|---|---|
static PermissionCollection |
UNSUPPORTED_EMPTY_COLLECTION
一个只读空PermissionCollection实例。
|
| Constructor and Description |
|---|
Policy() |
| Modifier and Type | Method and Description |
|---|---|
static Policy |
getInstance(String type, Policy.Parameters params)
返回指定类型的策略对象。
|
static Policy |
getInstance(String type, Policy.Parameters params, Provider provider)
返回指定类型的策略对象。
|
static Policy |
getInstance(String type, Policy.Parameters params, String provider)
返回指定类型的策略对象。
|
Policy.Parameters |
getParameters()
返回策略参数。
|
PermissionCollection |
getPermissions(CodeSource codesource)
返回一个包含授予指定权限集PermissionCollection CodeSource对象。
|
PermissionCollection |
getPermissions(ProtectionDomain domain)
返回一个包含授予指定权限集PermissionCollection客体保护范围。
|
static Policy |
getPolicy()
返回已安装的策略对象。
|
Provider |
getProvider()
返回此策略的提供程序。
|
String |
getType()
返回此策略的类型。
|
boolean |
implies(ProtectionDomain domain, Permission permission)
对全球政策的权限授予ProtectionDomain是否授予权限。
|
void |
refresh()
刷新/重新加载策略配置。
|
static void |
setPolicy(Policy p)
设置系统范围的策略对象。
|
public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
public static Policy getPolicy()
setPolicy。该方法首先调用
SecurityManager.checkPermission与
SecurityPermission("getPolicy")权限以确保可以获得政策对象。
SecurityException -如果存在一个安全管理及其
checkPermission方法不允许获得政策对象。
SecurityManager.checkPermission(Permission),
setPolicy(java.security.Policy)
public static void setPolicy(Policy p)
SecurityManager.checkPermission与
SecurityPermission("setPolicy")权限以确保可以设定政策。
p -新制度的政策目标。
SecurityException -如果存在一个安全管理及其
checkPermission方法不允许设置策略。
SecurityManager.checkPermission(Permission),
getPolicy()
public static Policy getInstance(String type, Policy.Parameters params) throws NoSuchAlgorithmException
该方法通过注册安全提供商列表,从最开始的首选供应商。新政策的实施对象封装policyspi,支持指定类型的第一个提供程序返回。
注意,注册商的列表可以通过Security.getProviders()检索方法。
type -指定的政策类型。看到一个标准的政策类型的
Java Cryptography Architecture Standard Algorithm Name Documentation政策部分。
params -政策参数,这可能是空的。
SecurityException如果调用者没有权限指定类型的实例得到政策。
NullPointerException -如果指定类型的空。
IllegalArgumentException -如果指定的参数是不理解的policyspi实现从选定的供应商。
NoSuchAlgorithmException -如果没有供应商的支持为指定的类型policyspi实施。
Provider
public static Policy getInstance(String type, Policy.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
一个新的政策对象封装policyspi实现从指定的提供程序返回。指定的提供程序必须在提供者列表中注册。
注意,注册商的列表可以通过Security.getProviders()检索方法。
type -指定的政策类型。看到一个标准的政策类型的
Java Cryptography Architecture Standard Algorithm Name Documentation政策部分。
params -政策参数,这可能是空的。
provider -供应商。
SecurityException如果调用者没有权限指定类型的实例得到政策。
NullPointerException -如果指定类型的空。
IllegalArgumentException -如果指定供应商是null或空,或者指定的参数是不理解的policyspi实现从指定的供应商。
NoSuchProviderException -如果指定的供应商不在安全提供商注册名单。
NoSuchAlgorithmException -如果指定的提供程序不支持指定类型的policyspi实施。
Provider
public static Policy getInstance(String type, Policy.Parameters params, Provider provider) throws NoSuchAlgorithmException
一个新的政策对象封装policyspi实现从指定的提供程序对象返回。请注意,指定的提供程序对象不必在提供者列表中注册。
type -指定的政策类型。看到一个标准的政策类型的
Java Cryptography Architecture Standard Algorithm Name Documentation政策部分。
params -政策参数,这可能是空的。
provider -供应商。
SecurityException如果调用者没有权限指定类型的实例得到政策。
NullPointerException -如果指定类型的空。
IllegalArgumentException -如果指定的提供程序是无效的,或者指定的参数是不理解的policyspi实现从指定的供应商。
NoSuchAlgorithmException -如果指定的提供程序不支持指定类型的policyspi实施。
Provider
public Provider getProvider()
这一政策实例将只有通过电话Policy.getInstance得到供应商。否则,此方法返回空。
public String getType()
这一政策实例将只有通过电话Policy.getInstance得到型。否则,此方法返回空。
public Policy.Parameters getParameters()
这一政策实例将只有通过电话Policy.getInstance得到参数。否则,此方法返回空。
public PermissionCollection getPermissions(CodeSource codesource)
应用程序不鼓励调用此方法,因为此操作可能不受所有策略实现的支持。应用程序应该仅仅依靠implies方法执行策略检查。如果一个应用程序必须调用一个getpermissions方法,它应该叫getPermissions(ProtectionDomain)。
此方法的默认实现将返回policy.unsupported_empty_collection。该方法可以被重写,如果政策的实施可以返回一组权限授予CodeSource。
codesource - CodeSource,返回PermissionCollection已授予。
public PermissionCollection getPermissions(ProtectionDomain domain)
应用程序不鼓励调用此方法,因为此操作可能不受所有策略实现的支持。应用程序应该依靠implies方法执行策略检查。
此方法的默认实现第一检索权限返回通过getPermissions(CodeSource)(CodeSource取自指定的保护范围),以及权限在指定的保护范围。所有这些权限相结合,并在一个新的PermissionCollection对象返回。如果getPermissions(CodeSource)返回policy.unsupported_empty_collection,那么这个方法返回包含在指定的保护范围中的一个新的PermissionCollection对象的权限。
该方法可以被重写,如果政策实施支持返回一组授予权限保护范围。
domain - ProtectionDomain,返回PermissionCollection已授予。
public boolean implies(ProtectionDomain domain, Permission permission)
domain - ProtectionDomain测试
permission的权限对象进行测试的意义。
ProtectionDomain
public void refresh()
refresh在基于文件的政策将导致文件被重新读取。
这种方法的默认实现不做任何事。这种方法应该重写如果刷新操作是由政策执行支持。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.