- 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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedTransformService()默认构造函数,用于子类调用。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 StringgetAlgorithm()返回此TransformService支持的算法的URI。static TransformServicegetInstance(String algorithm, String mechanismType)返回一个TransformService支持指定算法URI(例如:Transform.XPATH2)和机制类型(比如:DOM)。static TransformServicegetInstance(String algorithm, String mechanismType, String provider)static TransformServicegetInstance(String algorithm, String mechanismType, Provider provider)StringgetMechanismType()返回此TransformService支持的机制类型。ProvidergetProvider()返回此TransformService的提供者。abstract voidinit(TransformParameterSpec params)使用指定的参数初始化此TransformService。abstract voidinit(XMLStructure parent, XMLCryptoContext context)使用指定的参数和文档上下文初始化此TransformService。abstract voidmarshalParams(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实现。 它遍历注册安全性列表Providers,从最喜欢的Provider。 将TransformService第一个Provider中支持指定算法和机制类型的新TransformService对象。请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- Implementation Note:
-
JDK Reference Implementation另外使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。 这可能与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
-
-