我当前的变换器是Jalan附带的xalan,位于路径'C:\ apps \ jboss-4.2.3.GA \ lib \ endorsed \ xalan.jar“
启动Jboss并为其设置所有变量的批处理文件有一个“使用编译XSLT处理器(XSLTC)”的部分。它的当前值为:
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
如果我将'saxon9he.jar'的副本放入'C:\ apps \ jboss-4.2.3.GA \ lib \ endorsed \'文件夹中,我如何更改批处理文件中的上一行以调用'saxon9he.jar'的文件?
我猜它现在被API调用了吗?
答案 0 :(得分:0)
您可以尝试将TransformerFactory属性的值更改为
net.sf.saxon.TransformerFactoryImpl
这有可能将所有 JAXP操作重定向到使用Saxon而不是Xalan,并且在像JBoss这样的大型系统中,很可能会有一些应用程序组件假设Xalan将是加载并失败,如果他们得到别的东西。因此,更安全的方法是仅更改您明确要使用Saxon的代码,您可以通过替换标准JAXP调用来完成
TransformerFactory factory = TransformerFactory.newInstance();
通过
TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();
除了在确保获得预期的处理器方面更加强大之外,直接实例化类而不是使用JAXP类路径搜索也要快得多。