JavaTM 2 Platform
Standard Ed. 5.0

java.security
类 Provider

java.lang.Object
  继承者 java.util.Dictionary<K,V>
      继承者 java.util.Hashtable<Object,Object>
          继承者 java.util.Properties
              继承者 java.security.Provider
所有已实现的接口:
Serializable, Cloneable, Map<Object,Object>
直接已知子类:
AuthProvider

public abstract class Provider
extends Properties

此类表示 Java 安全 API "provider",这里 provider 实现了 Java 安全性的一部分或者全部。provider 可能实现的服务包括:

每个 provider 有一个名称和一个版本号,并且在每个它装入运行时中进行配置。

有关特定类型的 provider、加密服务 provider 如何工作和安装的信息,请参阅 "Java Cryptography Architecture API Specification & Reference" 中的 The Provider Class。但是,请注意 provider 能够被用来实现 Java 中的任何安全服务,这些安全服务使用带有适合下层的实现选择的可插入架构。

某些 provider 的实现在操作时可能遇到不可恢复的内部错误,例如与安全性令牌通信的错误。应该使用 ProviderException 指示此类错误。

服务类型 Provider 留给安全框架使用。此类型的服务不能被应用程序添加、移除或修改。以下属性自动放置在每个 Provider 对象中:

名称
Provider.id name String.valueOf(provider.getName())
Provider.id version String.valueOf(provider.getVersion())
Provider.id info String.valueOf(provider.getInfo())
Provider.id className provider.getClass().getName()

另请参见:
序列化表格

嵌套类摘要
static class Provider.Service
          安全服务的描述。
 
字段摘要
 
从类 java.util.Properties 继承的字段
defaults
 
构造方法摘要
protected Provider(String name, double version, String info)
          用指定的名称、版本号和信息构造一个 provider。
 
方法摘要
 void clear()
          清除此 provider,使其不再包含用来查找由该 provider 实现的设施的属性。
 Set<Map.Entry<Object,Object>> entrySet()
          返回此 Provider 中所包含的属性项的一个不可修改的 Set 视图。
 String getInfo()
          返回 provider 及其服务的人可读 (human-readable) 的描述。
 String getName()
          返回此 provider 的名称。
 Provider.Service getService(String type, String algorithm)
          获取描述此算法或别名的指定类型的此 Provider 实现的服务。
 Set<Provider.Service> getServices()
          获取此 Provider 支持的所有服务的一个不可修改的 Set。
 double getVersion()
          返回此 provider 的版本号。
 Set<Object> keySet()
          返回此 provider 中所包含的属性键的一个不可修改的 Set 视图。
 void load(InputStream inStream)
          从输入流中读取属性列表(键和元素对)。
 Object put(Object key, Object value)
          设置 key 属性,使其具有指定的 value
 void putAll(Map<?,?> t)
          将指定 Map 中所有映射关系复制到此 provider 中。
protected  void putService(Provider.Service s)
          添加服务。
 Object remove(Object key)
          移除 key 属性(及其相应的 value)。
protected  void removeService(Provider.Service s)
          移除以前用 putService() 添加的服务。
 String toString()
          返回具有此 provider 名称和版本号的字符串。
 Collection<Object> values()
          返回此 provider 中所包含的属性值的一个不可修改的 Collection 视图。
 
从类 java.util.Properties 继承的方法
getProperty, getProperty, list, list, loadFromXML, propertyNames, save, setProperty, store, storeToXML, storeToXML
 
从类 java.util.Hashtable 继承的方法
clone, contains, containsKey, containsValue, elements, equals, get, hashCode, isEmpty, keys, rehash, size
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Provider

protected Provider(String name,
                   double version,
                   String info)
用指定的名称、版本号和信息构造一个 provider。

参数:
name - provider 的名称。
version - provider 的版本号。
info - provider 及其服务的描述。
方法详细信息

getName

public String getName()
返回此 provider 的名称。

返回:
此 provider 的名称。

getVersion

public double getVersion()
返回此 provider 的版本号。

返回:
此 provider 的版本号。

getInfo

public String getInfo()
返回 provider 及其服务的人可读 (human-readable) 的描述。此方法可能返回带有相关链接的 HTML 页面。

返回:
provider 及其服务的描述。

toString

public String toString()
返回具有此 provider 名称和版本号的字符串。

覆盖:
Hashtable<Object,Object> 中的 toString
返回:
具有此 provider 名称和版本号的字符串。

clear

public void clear()
清除此 provider,使其不再包含用来查找由该 provider 实现的设施的属性。

首先,如果存在安全管理器,则用字符串 "clearProviderProperties."+name(其中 name 是 provider 的名称)作为参数值调用其 checkSecurityAccess 方法,以查看是否能够清除此 provider。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致使用 SecurityPermission("clearProviderProperties."+name) 权限来调用安全管理器的 checkPermission 方法。

指定者:
接口 Map<Object,Object> 中的 clear
覆盖:
Hashtable<Object,Object> 中的 clear
抛出:
SecurityException - 如果存在安全管理器,且其 {SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝清除此 provider
从以下版本开始:
1.2

load

public void load(InputStream inStream)
          throws IOException
从输入流中读取属性列表(键和元素对)。

覆盖:
Properties 中的 load
参数:
inStream - 输入流。
抛出:
IOException - 如果读取输入流时发生错误。
另请参见:
Properties.load(java.io.InputStream)

putAll

public void putAll(Map<?,?> t)
将指定 Map 中所有映射关系复制到此 provider 中。针对指定 Map 中的当前所有键,这些映射关系将替换此 provider 中具有的所有属性。

指定者:
接口 Map<Object,Object> 中的 putAll
覆盖:
Hashtable<Object,Object> 中的 putAll
参数:
t - 将存储在此映射中的映射关系。
从以下版本开始:
1.2

entrySet

public Set<Map.Entry<Object,Object>> entrySet()
返回此 Provider 中所包含的属性项的一个不可修改的 Set 视图。

指定者:
接口 Map<Object,Object> 中的 entrySet
覆盖:
Hashtable<Object,Object> 中的 entrySet
返回:
包含在此映射中的映射关系的 set 视图。
从以下版本开始:
1.2
另请参见:
Map.Entry

keySet

public Set<Object> keySet()
返回此 provider 中所包含的属性键的一个不可修改的 Set 视图。

指定者:
接口 Map<Object,Object> 中的 keySet
覆盖:
Hashtable<Object,Object> 中的 keySet
返回:
此映射所包含的键的 set 视图。
从以下版本开始:
1.2

values

public Collection<Object> values()
返回此 provider 中所包含的属性值的一个不可修改的 Collection 视图。

指定者:
接口 Map<Object,Object> 中的 values
覆盖:
Hashtable<Object,Object> 中的 values
返回:
此映射中所包含值的 collection 视图。
从以下版本开始:
1.2

put

public Object put(Object key,
                  Object value)
设置 key 属性,使其具有指定的 value

首先,如果存在安全管理器,则用字符串 "clearProviderProperties."+name(其中 name 是 provider 的名称)作为参数调用其 checkSecurityAccess 方法,以查看是否能设置此 provider 的属性值。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致使用 SecurityPermission("putProviderProperty."+name) 权限来调用安全管理器的 checkPermission 方法。

指定者:
接口 Map<Object,Object> 中的 put
覆盖:
Hashtable<Object,Object> 中的 put
参数:
key - 属性键。
value - 属性值。
返回:
指定属性 (key) 以前的值;如果不存在该值,则返回 null。
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝设置属性值。
从以下版本开始:
1.2
另请参见:
Object.equals(Object), Hashtable.get(Object)

remove

public Object remove(Object key)
移除 key 属性(及其相应的 value)。

首先,如果存在安全管理器,则用字符串 "removeProviderProperty."+name(其中 name 是 provider 的名称)作为参数调用其 checkSecurityAccess 方法,以查看是否能移除此 provider 的属性。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致使用 SecurityPermission("removeProviderProperty."+name) 权限来调用安全管理器的 checkPermission 方法。

指定者:
接口 Map<Object,Object> 中的 remove
覆盖:
Hashtable<Object,Object> 中的 remove
参数:
key - 要移除的属性的键。
返回:
与该键存在映射关系的值;如果该键没有映射关系,则返回 null。
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝移除此 provider 的属性。
从以下版本开始:
1.2

getService

public Provider.Service getService(String type,
                                   String algorithm)
获取描述此算法或别名的指定类型的此 Provider 实现的服务。如果不存在此类实现,则此方法返回 null。如果存在两个匹配的服务,分别使用 putService()put() 添加到此 provider,那么返回通过 putService() 添加的服务。

参数:
type - 请求的 service 类型(例如 MessageDigest
algorithm - 所请求服务不区分大小写的算法名称(或备用的别名)(例如 SHA-1
返回:
描述此 Provider 的匹配服务的服务,如果不存在此类服务,则返回 null
抛出:
NullPointerException - 如果类型或算法为 null
从以下版本开始:
1.5

getServices

public Set<Provider.Service> getServices()
获取此 Provider 支持的所有服务的一个不可修改的 Set。

返回:
此 Provider 支持的所有服务的一个不可修改的 Set。
从以下版本开始:
1.5

putService

protected void putService(Provider.Service s)
添加服务。如果存在一个具有相同算法名称的相同类型服务,并且它是使用 putService() 添加的,则其将被新的服务替换。此方法还将关于此服务的信息放在 provider 的 Hashtable 值中,以《Java Cryptography Architecture API Specification & Reference》中描述的格式存放。

同样,如果存在安全管理器,则用字符串 "clearProviderProperties."+name(其中 name 是 provider 的名称)作为参数调用其 checkSecurityAccess 方法,以查看是否能设置此 provider 的属性值。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致使用 SecurityPermission("putProviderProperty."+name) 权限来调用安全管理器的 checkPermission 方法。

参数:
s - 要添加的服务
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝设置属性值。
NullPointerException - 如果 s 为 null
从以下版本开始:
1.5

removeService

protected void removeService(Provider.Service s)
移除以前用 putService() 添加的服务。从此 provider 中移除指定的服务。它将不再会被 getService() 返回,并且将从此 provider 的 Hashtable 中移除其信息。

同样,如果存在安全管理器,则用字符串 "removeProviderProperty."+name(其中 name 是 provider 的名称)作为参数调用其 checkSecurityAccess 方法,以查看是否能移除此 provider 的属性。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致使用 SecurityPermission("removeProviderProperty."+name) 权限来调用安全管理器的 checkPermission 方法。

参数:
s - 要移除的服务
抛出:
SecurityException - 如果存在安全管理器,且其 checkDelete 方法拒绝移除此 provider 的属性。
NullPointerException - 如果 s 为 null
从以下版本开始:
1.5

JavaTM 2 Platform
Standard Ed. 5.0

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

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