3

JBoss 6 に Java EE 6 JAX-RS Web サービスをデプロイしていますが、現在使用されている SAX/StAX パーサーの代わりにWoodstoxを使用したいと考えています。一部のスタック トレースには、(他のパッケージの中でも) クラスがリストされているため、次のようになります。

  • 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 引数を追加しようとしました。

-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

私は何を間違っていますか?(私が思うに) Xerces の代わりに JAXB に Woodstox を使用させるにはどうすればよいですか?

4

1 に答える 1

0

EclipseLink JAXB (MOXy)が XMLStreamReader を作成する場合、標準APIを使用して作成するため、環境に適したものを取得する必要があります:

xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(reader);

そうは言っても、JBoss JAX-RS 実装が、独自の XMLStreamReader (InputStream のアンマーシャリングなど) を作成できる MOXy コード パスを呼び出しており、(JBoss が選択した) 実際の XMLStreamReader を渡さないことを前提としています。

于 2011-05-06T20:20:51.497 に答える