JBoss 7.1 Xalan问题?

4

我正在尝试在JBoss7上创建一个基于Apache Jena的应用程序。

Apache Jena使用Xalan 2.11.0,而JBoss 7则使用2.7.1版本。

当我尝试调用该应用程序时,会出现异常,其根本原因是:

org.apache.xerces.impl.dv.DVFactoryException: Schema factory class org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl does not extend from SchemaDVFactory

我怀疑这是由于版本差异所致。我阅读了模块文档(https://docs.jboss.org/author/display/MODULES/Introduction),并尝试更改为Xalan 2.11.0,但没有成功:JBoss启动时会卡住。是否有人成功地完成了这项工作,或者是否有人知道如何覆盖部署的Xalan版本?

谢谢!


Xalan 2.11.0不存在,请查看项目网站:http://xalan.apache.org/。你可能想到的是xerces吗? - Tomaz Cerar
3个回答

7
JBoss 7或JBoss EAP 6自带其自己的xalan版本,您可以在其模块中找到它, 在jboss eap 6.1中: /modules/system/layers/base/org/apache/xalan/main
如果您想使用自己的版本,首先您需要在war的 /WEB-INF/jboss-deployment-structure.xml 和ear的/META-INF/jboss-deployment-structure.xml中使用以下JBoss部署描述符来排除jboss xalan:
<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,因为它们通常是捆绑在一起的。

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>

虽然我没有测试过这个,但是你可以试试看,如果可以的话请报告一下。如果不行我们会尝试另一种方法。


0

CBU(碳基单元)出了问题,我本应该玩xerces,却在玩xalan。这是xerces 2.11的问题(唉)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接