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.