- java.lang.Object
-
- javax.xml.crypto.dsig.TransformService
-
- 实现的所有接口
-
AlgorithmMethod
,Transform
,XMLStructure
public abstract class TransformService extends Object implements Transform
用于转换和规范化算法的服务提供者接口。TransformService
每个实例TransformService
支持特定的转换或规范化算法和XML机制类型。 要创建TransformService
,请调用其中一个静态getInstance
方法,传入所需的算法URI和XML机制类型,例如:TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
使用
Provider
机制注册和加载TransformService
实现。 每个TransformService
服务提供程序实现应包含MechanismType
服务属性,该属性标识它支持的XML机制类型。 如果未指定该属性,则假定为“DOM”。 例如,支持XPath Filter 2 Transform和DOM机制的服务提供程序将在Provider
子类中指定为:put("TransformService." + Transform.XPATH2, "org.example.XPath2TransformService"); put("TransformService." + Transform.XPATH2 + " MechanismType", "DOM");
TransformService
支持DOM机制类型的实现必须遵守API概述的DOM Mechanism Requirements部分中定义的DOM互操作性要求。 有关标准机制类型的列表,请参阅API概述的Service Providers部分。创建
TransformService
,可以使用它处理Transform
或CanonicalizationMethod
对象。 如果Transform
或CanonicalizationMethod
以XML格式存在(例如,在验证现有XMLSignature
),则必须首先调用init(XMLStructure, XMLCryptoContext)
方法以初始化转换并提供文档上下文(即使没有参数)。 或者,如果从头开始创建Transform
或CanonicalizationMethod
,则调用init(TransformParameterSpec)
方法以使用参数初始化转换,并调用marshalParams
方法将参数封送到XML并使用文档上下文提供转换。 最后,调用transform
方法来执行转换。并发访问
这个类的静态方法保证是线程安全的。 多个线程可以同时调用此类中定义的静态方法,而不会产生任何不良影响。
但是,对于此类定义的非静态方法,情况并非如此。 除非特定提供程序另有说明,否则需要同时访问单个
TransformService
实例的线程应在它们之间进行同步并提供必要的锁定。 每个操作不同TransformService
实例的多个线程无需同步。- 从以下版本开始:
- 1.6
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
TransformService()
默认构造函数,用于子类调用。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 String
getAlgorithm()
返回此TransformService
支持的算法的URI。static TransformService
getInstance(String algorithm, String mechanismType)
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型(比如:DOM)。static TransformService
getInstance(String algorithm, String mechanismType, String provider)
static TransformService
getInstance(String algorithm, String mechanismType, Provider provider)
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
-
-
-
-
方法详细信息
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType) throws NoSuchAlgorithmException
返回一个TransformService
支持指定算法URI(例如:Transform.XPATH2
)和机制类型(比如:DOM)。此方法使用标准JCA提供程序查找机制来定位和实例化所需算法和
MechanismType
服务属性的TransformService
实现。 它遍历注册安全性列表Provider
s,从最喜欢的Provider
。 将TransformService
第一个Provider
中支持指定算法和机制类型的新TransformService
对象。请注意,可以通过
Security.getProviders()
方法检索已注册提供商的列表。- Implementation Note:
-
JDK Reference Implementation另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供程序顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 - 结果
-
一个新的
TransformService
- 异常
-
NullPointerException
- 如果algorithm
或mechanismType
是null
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定算法和机制类型的TransformService
实现 - 另请参见:
-
Provider
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, Provider provider) throws NoSuchAlgorithmException
返回TransformService
,它支持指定的TransformService
程序提供的指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)。 请注意,指定的Provider
对象不必在提供程序列表中注册。- 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 -
provider
-Provider
对象 - 结果
-
一个新的
TransformService
- 异常
-
NullPointerException
-如果provider
,algorithm
,或mechanismType
为null
-
NoSuchAlgorithmException
- 如果指定的算法和机制类型的TransformService
实现不可用于指定的Provider
对象 - 另请参见:
-
Provider
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回TransformService
,它支持指定TransformService
程序提供的指定算法URI(例如:Transform.XPATH2
)和机制类型(例如:DOM)。 必须在安全提供程序列表中注册指定的提供程序。请注意,可以通过
Security.getProviders()
方法检索已注册提供商的列表。- 参数
-
algorithm
- 算法的URI -
mechanismType
- XML处理机制和表示的类型 -
provider
- 提供程序的字符串名称 - 结果
-
一个新的
TransformService
- 异常
-
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
-如果provider
,mechanismType
,或algorithm
为null
-
NoSuchAlgorithmException
- 如果指定的提供程序无法获得指定算法和机制类型的TransformService
实现 - 另请参见:
-
Provider
-
getMechanismType
public final String getMechanismType()
返回此TransformService
支持的机制类型。- 结果
- 机制类型
-
getAlgorithm
public final String getAlgorithm()
返回此TransformService
支持的算法的URI。- Specified by:
-
getAlgorithm
在界面AlgorithmMethod
- 结果
- 算法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
不兼容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
- if the specified parameters are invalid for this algorithm
-
-