gpt4 book ai didi

java - 在 Wildfly 8.1 中设置 javax.xml.transform.TransformerFactory

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:26 24 4
gpt4 key购买 nike

我的软件需要两个 TransformerFactory 实现。我必须处理 PDF 的 xml 和 xls/fo (格式化对象)。对于我们软件的较新版本,我想使用用户定义的 xsl 函数,我使用 net.sf.saxon.TransformerFactoryImpl ,它在源代码中直接引用。由于数据库中的旧数据需要使用 org.apache.xalan.processor.TransformerFactoryImpl 处理旧数据,因此 saxon 会抛出错误并且不会渲染 PDF。

使用 Tomcat 时,我只需将“-Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl”设置为 vm 参数,就没有问题。

当使用 Wildfly 设置 vm 参数时,会导致 wildfly 抛出以下异常:“线程“main”javax.xml.transform.TransformerFactoryConfigurationError中出现异常:未找到提供程序org.apache.xalan.processor.TransformerFactoryImpl”

我的 war 文件中包含 xalan.jar。xalan 的 jboss 特定版本是 Wildlfy 发行版的一部分。

为什么没有找到?为什么 Wildfly 在启动 Wildfly 服务时甚至尝试加载工厂?如何配置 Wildfly 在启动期间找到 xalan 变压器工厂?将模块条目写入standalone.xml 或domain.xml 没有帮助。

我知道 Wildfly 中有一个错误,表示变压器工厂的重定向不指向 Wildfly 变压器工厂,而是指向 java 默认值。我认为这不会对我的问题产生任何影响,因为我尝试设置另一个默认值。

有什么帮助吗?

最佳答案

我在 JBoss 7 上遇到了类似的问题,并且 Wildfly 似乎也有同样的问题。只是一个疯狂的猜测:JBoss 在启动时加载其配置文件并在关闭时保存它们(不确定为什么,但如果您在 JBoss 运行时对standalone.xml 进行任何修改,您将看到在关闭时它们被覆盖)。我猜想 JBoss 需要使用变压器来保存其配置文件(standalone.xml),这就是为什么它在启动时加载变压器(甚至在解析模块配置以查看有一个 xalan 库要添加到类路径中并且在部署 war 文件之前)。但正如我所说,这只是一个猜测......我可能完全错误。

为了消除启动错误,您必须将 xalan 库放置在 $JAVA_HOME/jre/lib/ext 中(这样您将使其可供所有应用程序使用),或者您可以停止使用系统属性-Djavax.xml.transform.TransformerFactory 并在您的standalone.xml 文件中添加下一个属性。

 <system-properties>
<property name="javax.xml.transform.TransformerFactory" value="org.apache.xalan.xsltc.trax.TransformerFactoryImpl"/>
</system-properties>

关于java - 在 Wildfly 8.1 中设置 javax.xml.transform.TransformerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25768344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com