JavaTM 2 Platform
Standard Ed. 6

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" 中的 Provider 類別。但是,請注意 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 實作的設施的屬性。
 Enumeration<Object> elements()
          返回此雜湊表中的值的列舉。
 Set<Map.Entry<Object,Object>> entrySet()
          返回此 Provider 中所包含的屬性項的一個不可修改的 Set 視圖。
 Object get(Object key)
          返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回 null. 更確切地講,如果此映射包含滿足 (key.equals(k)) 的從鍵 k 到值 v 的映射,則此方法返回 v;否則,返回 null
 String getInfo()
          返回 provider 及其服務的人可讀 (human-readable) 的描述。
 String getName()
          返回此 provider 的名稱。
 String getProperty(String key)
          用指定的鍵在此屬性列表中搜尋屬性。
 Provider.Service getService(String type, String algorithm)
          獲取描述此演算法或別名的指定型別的此 Provider 實作的服務。
 Set<Provider.Service> getServices()
          獲取此 Provider 支持的所有服務的一個不可修改的 Set。
 double getVersion()
          返回此 provider 的版本號。
 Enumeration<Object> keys()
          返回此雜湊表中的鍵的列舉。
 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, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNames
 
從類別 java.util.Hashtable 繼承的方法
clone, contains, containsKey, containsValue, equals, hashCode, isEmpty, 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.Reader)

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

get

public Object get(Object key)
從類別 Hashtable 複製的描述
返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回 null.

更確切地講,如果此映射包含滿足 (key.equals(k)) 的從鍵 k 到值 v 的映射,則此方法返回 v;否則,返回 null。(最多只能有一個這樣的映射。)

指定者:
介面 Map<Object,Object> 中的 get
覆寫:
類別 Hashtable<Object,Object> 中的 get
參數:
key - 要返回其相關值的鍵
返回:
指定鍵映射到的值,如果此映射不包含到鍵的映射,則返回 null
另請參見:
Hashtable.put(Object, Object)

keys

public Enumeration<Object> keys()
從類別 Hashtable 複製的描述
返回此雜湊表中的鍵的列舉。

覆寫:
類別 Hashtable<Object,Object> 中的 keys
返回:
此雜湊表中的鍵的列舉。
另請參見:
Enumeration, Hashtable.elements(), Hashtable.keySet(), Map

elements

public Enumeration<Object> elements()
從類別 Hashtable 複製的描述
返回此雜湊表中的值的列舉。對返回的物件使用 Enumeration 方法,以便按順序獲取這些元素。

覆寫:
類別 Hashtable<Object,Object> 中的 elements
返回:
此雜湊表中的值的列舉。
另請參見:
Enumeration, Hashtable.keys(), Hashtable.values(), Map

getProperty

public String getProperty(String key)
從類別 Properties 複製的描述
用指定的鍵在此屬性列表中搜尋屬性。如果在此屬性列表中未找到該鍵,則接著遞歸檢查預設屬性列表及其預設值。如果未找到屬性,則此方法返回 null

覆寫:
類別 Properties 中的 getProperty
參數:
key - 屬性鍵。
返回:
屬性列表中具有指定鍵值的值。
另請參見:
Properties.setProperty(java.lang.String, java.lang.String), Properties.defaults

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. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only