- 所有已实现的接口:
AlgorithmMethod,Transform,XMLStructure
TransformService 的每个实例都支持特定的转换或规范化算法和 XML 机制类型。要创建 TransformService ,调用静态 getInstance 方法之一,传入所需的算法 URI 和 XML 机制类型,例如:
TransformService ts = TransformService.getInstance(Transform.XPATH2, "DOM");
TransformService 实现是使用 Provider 机制注册和加载的。每个 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 机制类型的实现必须遵守 DOM 机制要求 中定义的 DOM 互操作性要求。有关标准算法 URI 和机制类型的列表,请参阅 Java 安全标准算法名称规范 中的 TransformService 部分。
创建 TransformService 后,它可用于处理 Transform 或 CanonicalizationMethod 对象。如果 Transform 或 CanonicalizationMethod 以 XML 形式存在(例如,在验证现有的 XMLSignature 时),则必须首先调用 init(XMLStructure, XMLCryptoContext) 方法来初始化转换并提供文档上下文(即使没有参数)。或者,如果 Transform 或 CanonicalizationMethod 是从头开始创建的,则调用 init(TransformParameterSpec) 方法以使用参数初始化转换,并调用 marshalParams 方法将参数编组为 XML 并为转换提供文档上下文。最后调用transform 方法进行转换。
并发访问
此类的静态方法保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生不良影响。
但是,对于此类定义的非静态方法,情况并非如此。除非特定提供者另有说明,否则需要同时访问单个 TransformService 实例的线程应该在它们之间同步并提供必要的锁定。每个操作不同TransformService实例的多个线程不需要同步。
- 自从:
- 1.6
-
字段摘要
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述final String返回此TransformService支持的算法的 URI。static TransformServicegetInstance(String algorithm, String mechanismType) 返回支持指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)的TransformService。static TransformServicegetInstance(String algorithm, String mechanismType, String provider) 返回一个TransformService,它支持由指定提供者提供的指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)。static TransformServicegetInstance(String algorithm, String mechanismType, Provider provider) 返回一个TransformService,它支持由指定提供者提供的指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)。final String返回此TransformService支持的机制类型。final Provider返回此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
-
构造方法详细信息
-
TransformService
protected TransformService()默认构造方法,供子类调用。
-
-
方法详情
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType) throws NoSuchAlgorithmException 返回支持指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)的TransformService。此方法使用标准 JCA 提供程序查找机制来定位和实例化所需算法的
TransformService实现和MechanismType服务属性。它遍历已注册安全性Provider的列表,从最喜欢的Provider开始。返回支持指定算法和机制类型的第一个Provider的新TransformService对象。请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- 实现注意事项:
-
JDK 参考实现还使用
jdk.security.provider.preferredSecurity属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()返回的提供商顺序不同。 - 参数:
algorithm- 算法的 URI。有关标准变换算法的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。mechanismType- XML 处理机制和表示的类型。有关标准机制类型的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。- 返回:
-
一个新的
TransformService - 抛出:
NullPointerException- 如果algorithm或mechanismType是nullNoSuchAlgorithmException- 如果没有Provider支持指定算法和机制类型的TransformService实现- 参见:
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, Provider provider) throws NoSuchAlgorithmException 返回一个TransformService,它支持由指定提供者提供的指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)。请注意,指定的Provider对象不必在提供者列表中注册。- 参数:
algorithm- 算法的 URI。有关标准变换算法的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。mechanismType- XML 处理机制和表示的类型。有关标准机制类型的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。provider-Provider对象- 返回:
-
一个新的
TransformService - 抛出:
NullPointerException- 如果provider、algorithm或mechanismType是nullNoSuchAlgorithmException- 如果无法从指定的Provider对象获得指定算法和机制类型的TransformService实现- 参见:
-
getInstance
public static TransformService getInstance(String algorithm, String mechanismType, String provider) throws NoSuchAlgorithmException , NoSuchProviderException 返回一个TransformService,它支持由指定提供者提供的指定算法 URI(例如:Transform.XPATH2)和机制类型(例如:DOM)。指定的提供者必须在安全提供者列表中注册。请注意,可以通过
Security.getProviders()方法检索已注册提供商的列表。- 参数:
algorithm- 算法的 URI。有关标准变换算法的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。mechanismType- XML 处理机制和表示的类型。有关标准机制类型的列表,请参阅 Java 安全标准算法名称规范 中的TransformService部分。provider- 提供者的字符串名称- 返回:
-
一个新的
TransformService - 抛出:
NoSuchProviderException- 如果指定的提供者没有在安全提供者列表中注册NullPointerException- 如果provider、mechanismType或algorithm是nullNoSuchAlgorithmException- 如果指定提供者无法提供指定算法和机制类型的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是nullMarshalException- 如果无法编组参数
-
init
public abstract void init(XMLStructure parent, XMLCryptoContext context) throws InvalidAlgorithmParameterException 使用指定的参数和文档上下文初始化此TransformService。- 参数:
parent- 包含父结构的机制特定结构context- 包含额外上下文的XMLCryptoContext(如果不适用可能是null)- 抛出:
ClassCastException- 如果parent或context的类型与此TransformService不兼容NullPointerException- 如果parent是nullInvalidAlgorithmParameterException- 如果指定的参数对该算法无效
-