Module java.xml.crypto

Class 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");

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之后,它可以用于处理TransformCanonicalizationMethod对象。如果TransformCanonicalizationMethod以XML形式存在(例如,在验证现有的XMLSignature时),必须首先调用init(XMLStructure, XMLCryptoContext)方法来初始化转换并提供文档上下文(即使没有参数)。或者,如果从头开始创建TransformCanonicalizationMethod,则调用init(TransformParameterSpec)方法来使用参数初始化转换,并调用marshalParams方法将参数编组为XML并提供转换文档上下文。最后,调用transform方法执行转换。

并发访问

此类的静态方法保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生任何不良影响。

但对于此类定义的非静态方法来说并非如此。除非特定提供者另有说明,需要同时访问单个TransformService实例的线程应在彼此之间同步并提供必要的锁定。每个操作不同TransformService实例的多个线程无需同步。

自:
1.6
  • Constructor Details

    • TransformService

      protected TransformService()
      默认构造函数,供子类调用。
  • Method Details