我正在 JBoss 6 上部署 Java EE 6 JAX-RS Web 服务,我想使用Woodstox而不是当前使用的任何 SAX/StAX 解析器。由于某些堆栈跟踪列出了(在其他包中)中的类:
org.apache.xerces.parsers
org.apache.xerces.impl
org.apache.xerces.jaxp
...我猜它正在使用Xerces。
我已经尝试将必要的 JAR(woodstox-core-asl-4.1.1.jar
和stax2-api-3.1.1.jar
)添加到 EAR(部署在/lib
目录中)和 WAR(在WEB-INF/lib
)中,但这似乎没有影响任何事情,因为 XML 解析中异常的堆栈跟踪仍然引用 Xerces 包。
我已经阅读过这个问题,但我认为我已经尝试过如上所述的“将其添加到您的类路径”选项。我也已经尝试根据此线程添加以下 VM args :
-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory
-Djavax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory
-Djavax.xml.stream.XMLEventFactory=com.ctc.wstx.stax.WstxEventFactory
-Dcom.sun.xml.ws.api.streaming.XMLStreamReaderFactory.woodstox=true
-Dcom.sun.xml.ws.api.streaming.XMLStreamWriterFactory.woodstox=true
我究竟做错了什么?如何让 JAXB 使用 Woodstox 而不是(我认为)Xerces?