java - 尝试将 Saxon 与 Web 服务一起使用时 TransformerFactoryConfigurationError

标签 java wso2 saxon transformer-model wso2-wsas

我的 Web 服务位于 WSO2 WSAS 应用程序服务器内的 Axis2 上,包含以下代码:

String prop = "javax.xml.transform.TransformerFactory";
String val = "net.sf.saxon.TransformerFactoryImpl";

public static TransformerFactory getTransformerFactory() {
    System.setProperty(prop, val); // This line executes normally
    return TransformerFactory.newInstance(); // Error occurs inside this call
}

运行时,该服务会产生以下错误:

[2013-04-15 12:22:41,263] ERROR
  {org.apache.axis2.transport.base.threads.NativeWorkerPool} -  Uncaught
  exception
javax.xml.transform.TransformerFactoryConfigurationError: Provider
  net.sf.saxon.TransformerFactoryImpl not found
        at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
        at com.example.Setup.getTransformerFactory(Setup.java:40)
        at com.example.ProcessFiles.init(ProcessFiles.java:336)
        at com.example.TorgApp.incoming(TorgApp.java:229)
        ...

我的类路径中有 Saxon-HE-9.4.jar,并且它是可读的。它也适用于 Axis2 (/foo/bar/wso2as/wso2as-4.0.0/tmp/axis2-tmp-6436419317930731973.tmp/axis67573163200472779114Saxon-HE-9.4.jar)。

根据the Javadoc for newInstance() ,我设置的系统属性应该优先于识别要使用的 TransformerFactory 的所有其他方法,因此优先级不是问题。

什么可能导致此错误,我该怎么做才能获得我想要的 Saxon 变压器工厂?

最佳答案

如果 axis2(这似乎是异常的原因)放置在您的 Web 应用程序之外,那么您还必须使 Saxon 也在那里可用。

大多数应用程序服务器都有一个预定义的位置,可以为此目的放置 jar 文件。仅将其部署到您的 Web 应用程序中是不够的。

关于java - 尝试将 Saxon 与 Web 服务一起使用时 TransformerFactoryConfigurationError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069519/

相关文章:

Java 日历未显示正确的信息

java - J2ME应用问题! (空指针异常)

java - 嵌套for循环优化

java - 在 WSO2 Identity Server 中创建工作流时出错 (wso2is-km-5.9.0)

wso2 - WSO2 Identity Server 5.0 是否支持 OpenId Connect response_type id_token

xml - 将节点插入另一个 XML,创建新元素(或更新现有元素)并重新排序生成的文档

xpath - 使用 dom4j 将 XPath 3.0 添加到代码库的最轻松的方法

java - Jersey POST 参数值始终为 null,但与 curl 命令配合使用效果良好

java - WSO2 IS OAuth2 资源所有者密码 - 获取访问 token

java - 使用 Java 将 XSLT 与 import/include 语句合并