我正在尝试在JBoss7上创建一个基于Apache Jena的应用程序。
Apache Jena使用Xalan 2.11.0 JBoss 7附带2.7.1
当我尝试调用应用程序时,我得到一个例外,其根源是:
org.apache.xerces.impl.dv.DVFactoryException:架构工厂类org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl不从SchemaDVFactory扩展
我怀疑这是因为版本的不同。我仔细阅读了模块文档(https://docs.jboss.org/author/display/MODULES/Introduction)并尝试更改了Xalan 2.11.0,但没有运气:Jboss在启动时就冻结了。有没有人成功完成这项工作,或者有人知道如何覆盖Xalan进行部署吗?
Thx
答案 0 :(得分:4)
JBoss 7或JBoss EAP 6附带自己的xalan版本,您可以在其模块中找到, 在jboss eap 6.1:
<JBoss Home>/modules/system/layers/base/org/apache/xalan/main
如果您想先使用自己的jboss xalan,请在/WEB-INF/jboss-deployment-structure.xml
中使用以下jboss部署描述符进行战争,将/META-INF/jboss-deployment-structure.xml
排除在耳后:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="org.apache.xalan" />
<module name="org.apache.xerces" />
</exclusions>
</deployment>
</jboss-deployment-structure>
我也排除了Xerces,因为通常它们捆绑在一起。
答案 1 :(得分:0)
CBU(碳基单位)中的问题当我应该使用xerces时,我正在玩xalan。它是xerces 2.11(DOH)
答案 2 :(得分:0)
最简单的方法是使用/WEB-INF/jboss-deployment-structure.xml
部署您的应用程序,并明确排除您要覆盖的JBoss提供的库,然后将它们自己打包在应用程序中,例如: /WEB-INF/lib/xalan-2.11.0.jar
以下是jboss-deployment-structure.xml的示例:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.apache.xalan" />
<module name="SOME.OTHER.MODULE.YOU.DONT.WANT.JBOSS.TO.PROVIDE" />
</dependencies>
</deployment>
</jboss-deployment-structure>
但是,我没有测试过这个。尝试它,如果它的工作和报告。如果不起作用,我们会尝试另一种方法。