JavaTM 2 Platform
Standard Ed. 6

javax.xml.crypto.dsig
類別 TransformService

java.lang.Object
  繼承者 javax.xml.crypto.dsig.TransformService
所有已實作的介面:
AlgorithmMethod, Transform, XMLStructure

public abstract class TransformService
extends Object
implements Transform

轉換演算法和規範演算法的服務提供者介面。

每個 TransformService 實例都支持一個特定的轉換或規範演算法以及 XML 機制型別。要創建 TransformService,需要調用一個靜態 getInstance 方法,並傳入所需的演算法 URI 和 XML 機制型別,例如:

TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");

使用 Provider 機制來註冊和載入 TransformService 實作。每個 TransformService 服務提供者實作都應該套件括一個 MechanismType 服務屬性,用它來標識所支持的 XML 機制型別。如果未指定該屬性,則假定 XML 機制型別為 “DOM”。例如,支持 XPath Filter 2 Transform 和 DOM 機制的服務提供者將在 Provider 子類別中指定,如下所示:

put("TransformService."+ Transform.XPATH2,
"org.example.XPath2TransformService");
put("TransformService."+ Transform.XPATH2 + " MechanismType", "DOM");
 
支持 DOM 機制型別的 TransformService 實作必須遵守 DOM 互操作性要求,正如 API 概觀中 DOM Mechanism Requirements 部分的定義。參見 API 概觀的 Service Providers 部分的標準機制型別列表。

一旦創建了 TransformService,就可以使用它來處理 TransformCanonicalizationMethod 物件。如果 TransformCanonicalizationMethod 以 XML 形式存在(例如,在驗證現有的 XMLSignature 時),則必須先調用 init(XMLStructure, XMLCryptoContext) 方法來初始化該轉換並提供文檔上下文(即使沒有參數)。此外,如果從頭創建 TransformCanonicalizationMethod,則將調用 init(TransformParameterSpec) 方法來初始化帶參數的轉換,並調用 marshalParams 方法將參數編組到 XML 且提供帶文檔上下文的轉換。最後,調用 transform 方法來執行轉換。

共時存取

可保證此類別的靜態方法是執行緒安全的。多個執行緒可以共時調用此類別中所定義的靜態方法,而不會產生不良效果。

但是,對於此類別所定義的非靜態方法並非如此。除非具體的提供者另行指定,否則需要共時存取單個 TransformService 實例的多個執行緒應該在它們之間實作同步並提供所需的鎖定。對於每個執行緒都操作一個不同 TransformService 實例的多個執行緒而言,無需實作同步。

從以下版本開始:
1.6

欄位摘要
 
從介面 javax.xml.crypto.dsig.Transform 繼承的欄位
BASE64, ENVELOPED, XPATH, XPATH2, XSLT
 
建構子摘要
protected TransformService()
          預設的建構子,由子類別調用。
 
方法摘要
 String getAlgorithm()
          返回此 TransformService 支持的演算法 URI。
static TransformService getInstance(String algorithm, String mechanismType)
          返回支持指定演算法 URI 的 TransformService(比如:Transform.XPATH2)和機制型別(比如:DOM)。
static TransformService getInstance(String algorithm, String mechanismType, Provider provider)
          返回支持指定演算法 URI(比如:Transform.XPATH2)和機制型別(比如:DOM)的 TransformService,由指定提供者提供。
static TransformService getInstance(String algorithm, String mechanismType, String provider)
          返回支持指定演算法 URI(比如:Transform.XPATH2)和機制型別(比如:DOM)的 TransformService,由指定提供者提供。
 String getMechanismType()
          返回此 TransformService 支持的機制型別。
 Provider getProvider()
          返回此 TransformService 的提供者。
abstract  void init(TransformParameterSpec params)
          使用指定的參數初始化此 TransformService
abstract  void init(XMLStructure parent, XMLCryptoContext context)
          使用指定的參數和文檔上下文初始化此 TransformService
abstract  void marshalParams(XMLStructure parent, XMLCryptoContext context)
          對特定於演算法的參數進行編組。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
從介面 javax.xml.crypto.dsig.Transform 繼承的方法
getParameterSpec, transform, transform
 
從介面 javax.xml.crypto.XMLStructure 繼承的方法
isFeatureSupported
 

建構子詳細資訊

TransformService

protected TransformService()
預設的建構子,由子類別調用。

方法詳細資訊

getInstance

public static TransformService getInstance(String algorithm,
                                           String mechanismType)
                                    throws NoSuchAlgorithmException
返回支持指定演算法 URI 的 TransformService(比如:Transform.XPATH2)和機制型別(比如:DOM)。

此方法使用標準的 JCA 提供者尋找機制來尋找並實例化所需演算法的 TransformService 實作和 MechanismType 服務屬性。它將從首選的 Provider 開始,遍歷已註冊的安全 Provider 列表。返回取自第一個支持指定演算法和機制型別的 Provider 的新 TransformService 物件。

注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。

參數:
algorithm - 演算法的 URI
mechanismType - XML 處理機制和表示形式的型別
返回:
新的 TransformService
拋出:
NullPointerException - 如果 algorithmmechanismTypenull
NoSuchAlgorithmException - 如果沒有 Provider 支持指定演算法和機制型別的 TransformService 實作
另請參見:
Provider

getInstance

public static TransformService getInstance(String algorithm,
                                           String mechanismType,
                                           Provider provider)
                                    throws NoSuchAlgorithmException
返回支持指定演算法 URI(比如:Transform.XPATH2)和機制型別(比如:DOM)的 TransformService,由指定提供者提供。注意,指定的 Provider 物件不必已經在提供者列表中註冊。

參數:
algorithm - 演算法的 URI
mechanismType - XML 處理機制和表示形式的型別
provider - Provider 物件
返回:
新的 TransformService
拋出:
NullPointerException - 如果 provideralgorithmmechanismTypenull
NoSuchAlgorithmException - 如果不能從指定的 Provider 物件得到指定演算法和機制型別的 TransformService 實作
另請參見:
Provider

getInstance

public static TransformService getInstance(String algorithm,
                                           String mechanismType,
                                           String provider)
                                    throws NoSuchAlgorithmException,
                                           NoSuchProviderException
返回支持指定演算法 URI(比如:Transform.XPATH2)和機制型別(比如:DOM)的 TransformService,由指定提供者提供。指定的提供者必須是已在安全提供者列表中註冊的。

注意,已註冊提供者的列表可以通過 Security.getProviders() 方法獲得。

參數:
algorithm - 演算法的 URI
mechanismType - XML 處理機制和表示形式的型別
provider - 提供者的字元串名稱
返回:
新的 TransformService
拋出:
NoSuchProviderException - 如果指定的提供者沒有在安全提供者列表中註冊
NullPointerException - 如果 providermechanismTypealgorithmnull
NoSuchAlgorithmException - 如果不能從指定的提供者得到指定演算法和機制型別的 TransformService 實作
另請參見:
Provider

getMechanismType

public final String getMechanismType()
返回此 TransformService 支持的機制型別。

返回:
機制型別

getAlgorithm

public final String getAlgorithm()
返回此 TransformService 支持的演算法 URI。

指定者:
介面 AlgorithmMethod 中的 getAlgorithm
返回:
演算法 URI

getProvider

public final Provider getProvider()
返回此 TransformService 的提供者。

返回:
提供者

init

public abstract void init(TransformParameterSpec params)
                   throws InvalidAlgorithmParameterException
使用指定的參數初始化此 TransformService

如果參數以 XML 形式存在,則應該使用 init(XMLStructure, XMLCryptoContext) 方法初始化 TransformService

參數:
params - 演算法參數(如果該參數不是必需的或是可選的,則為 null
拋出:
InvalidAlgorithmParameterException - 如果指定參數對於此演算法無效

marshalParams

public abstract void marshalParams(XMLStructure parent,
                                   XMLCryptoContext context)
                            throws MarshalException
對特定於演算法的參數進行編組。如果沒有要編組的參數,則此方法將返回且不會拋出異常。

參數:
parent - 特定於機制的結構,包含應追加到已編組參數中的父節點
context - 套件含其他上下文的 XMLCryptoContext(如果不適用,則該參數為 null
拋出:
ClassCastException - 如果 parent 型別或 context 型別與此 TransformService 不相容
NullPointerException - 如果 parentnull
MarshalException - 如果無法對參數進行編組

init

public abstract void init(XMLStructure parent,
                          XMLCryptoContext context)
                   throws InvalidAlgorithmParameterException
使用指定的參數和文檔上下文初始化此 TransformService

參數:
parent - 套件含父結構的特定於機制的結構
context - 套件含其他上下文的 XMLCryptoContext (如果不適用,則該參數為 null
拋出:
ClassCastException - 如果 parent 型別或 context 型別與此 TransformService 不相容
NullPointerException - 如果 parentnull
InvalidAlgorithmParameterException - 如果指定參數對於此演算法無效

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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