- 所有已实现的接口:
-
AlgorithmMethod
,Transform
,XMLStructure
TransformService
的每个实例支持特定的转换或规范化算法和XML机制类型。要创建一个TransformService
,请调用其中一个静态的getInstance
方法,传入所需的算法URI和XML机制类型,例如:
TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
TransformService
实现是通过Provider
机制进行注册和加载的。每个TransformService
服务提供者实现应包含一个标识其支持的XML机制类型的MechanismType
服务属性。如果未指定该属性,则假定为"DOM"。例如,支持XPath Filter 2 Transform和DOM机制的服务提供者将在Provider
子类中指定为:
put("TransformService." + Transform.XPATH2, "org.example.XPath2TransformService"); put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
TransformService
实现支持DOM机制类型必须遵守DOM机制要求中定义的DOM互操作性要求。请参阅Java安全标准算法名称规范中的TransformService
部分,了解标准算法URI和机制类型的列表。
创建了TransformService
之后,它可以用于处理Transform
或CanonicalizationMethod
对象。如果Transform
或CanonicalizationMethod
以XML形式存在(例如,在验证现有的XMLSignature
时),必须首先调用init(XMLStructure, XMLCryptoContext)
方法来初始化转换并提供文档上下文(即使没有参数)。或者,如果从头开始创建Transform
或CanonicalizationMethod
,则调用init(TransformParameterSpec)
方法来使用参数初始化转换,并调用marshalParams
方法将参数编组为XML并提供转换文档上下文。最后,调用transform
方法执行转换。
并发访问
此类的静态方法保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生任何不良影响。
但对于此类定义的非静态方法来说并非如此。除非特定提供者另有说明,需要同时访问单个TransformService
实例的线程应在彼此之间同步并提供必要的锁定。每个操作不同TransformService
实例的多个线程无需同步。
- 自:
- 1.6
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionfinal String
返回此TransformService
支持的算法的URI。static TransformService
getInstance
(String algorithm, String mechanismType) 返回支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。static TransformService
getInstance
(String algorithm, String mechanismType, String provider) 返回由指定提供者提供的支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。static TransformService
getInstance
(String algorithm, String mechanismType, Provider provider) 返回由指定提供者提供的支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。final String
返回此TransformService
支持的机制类型。final Provider
返回此TransformService
的提供者。abstract void
init
(TransformParameterSpec params) 使用指定参数初始化此TransformService
。abstract void
init
(XMLStructure parent, XMLCryptoContext context) 使用指定参数和文档上下文初始化此TransformService
。abstract void
marshalParams
(XMLStructure parent, XMLCryptoContext context) 编组特定于算法的参数。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface javax.xml.crypto.dsig.Transform
getParameterSpec, transform, transform
Methods declared in interface javax.xml.crypto.XMLStructure
isFeatureSupported
-
Constructor Details
-
TransformService
protected TransformService()默认构造函数,供子类调用。
-
-
Method Details
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType) throws NoSuchAlgorithmException 返回支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。此方法使用标准的JCA提供者查找机制来定位和实例化所需算法和
MechanismType
服务属性的TransformService
实现。它遍历已注册的安全Provider
列表,从最首选的Provider
开始。返回来自支持指定算法和机制类型的第一个Provider
的新TransformService
对象。请注意,已注册提供者列表可以通过
Security.getProviders()
方法检索。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。这可能与Security.getProviders()
返回的提供者顺序不同。 - 参数:
-
algorithm
- 算法的URI。请参阅Java安全标准算法名称规范中的TransformService
部分,了解标准转换算法的列表。 -
mechanismType
- XML处理机制和表示类型。请参阅Java安全标准算法名称规范中的TransformService
部分,了解标准机制类型的列表。 - 返回:
-
一个新的
TransformService
- 抛出:
-
NullPointerException
- 如果algorithm
或mechanismType
为null
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定算法和机制类型的TransformService
实现 - 参见:
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, Provider provider) throws NoSuchAlgorithmException 返回由指定提供者提供的支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。请注意,指定的Provider
对象不必在提供者列表中注册。- 参数:
-
algorithm
- 算法的URI。请参阅Java安全标准算法名称规范中的TransformService
部分,了解标准转换算法的列表。 -
mechanismType
- XML处理机制和表示类型。请参阅Java安全标准算法名称规范中的TransformService
部分,了解标准机制类型的列表。 -
provider
-Provider
对象 - 返回:
-
一个新的
TransformService
- 抛出:
-
NullPointerException
- 如果provider
、algorithm
或mechanismType
为null
-
NoSuchAlgorithmException
- 如果指定的Provider
对象中不存在指定算法和机制类型的TransformService
实现 - 参见:
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 返回由指定提供者提供的支持指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)的TransformService
。指定的提供者必须在安全提供者列表中注册。请注意,已注册提供者列表可以通过
Security.getProviders()
方法检索。- 参数:
-
algorithm
- 算法的URI。请参阅 Java安全标准算法名称规范中的TransformService
部分,获取标准转换算法的列表。 -
mechanismType
- XML处理机制和表示类型。请参阅 Java安全标准算法名称规范中的TransformService
部分,获取标准机制类型的列表。 -
provider
- 提供者的字符串名称 - 返回:
-
一个新的
TransformService
- 抛出:
-
NoSuchProviderException
- 如果指定的提供者未在安全提供者列表中注册 -
NullPointerException
- 如果provider
、mechanismType
或algorithm
为null
-
NoSuchAlgorithmException
- 如果指定算法和机制类型的TransformService
实现不可从指定提供者获取 - 参见:
-
getMechanismType
返回此TransformService
支持的机制类型。- 返回:
- 机制类型
-
getAlgorithm
返回此TransformService
支持的算法的URI。- 指定者:
-
getAlgorithm
在接口AlgorithmMethod
中 - 返回:
- 算法URI
-
getProvider
返回此TransformService
的提供者。- 返回:
- 提供者
-
init
使用指定的参数初始化此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
- 如果parent
为null
-
MarshalException
- 如果无法编组参数
-
init
public abstract void init(XMLStructure parent, XMLCryptoContext context) throws InvalidAlgorithmParameterException 使用指定的参数和文档上下文初始化此TransformService
。- 参数:
-
parent
- 包含父结构的机制特定结构 -
context
- 包含附加上下文的XMLCryptoContext
(如果不适用,则可能为null
) - 抛出:
-
ClassCastException
- 如果parent
或context
的类型与此TransformService
不兼容 -
NullPointerException
- 如果parent
为null
-
InvalidAlgorithmParameterException
- 如果指定的参数对于此算法无效
-