1

私は Java 6 を使用しており、rt.jar には STaX ベースの解析を行うために必要なすべてのクラスがあります。主に次のクラスを使用しています。

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.events.XMLEvent;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;

以下をJavaアプリケーションとして実行すると:

while(reader.hasNext()) {            
XMLEvent elementsEvent = reader.nextEvent();
System.out.println(elementsEvent.toString());
--------
}

期待どおりに動作しますが、これを JBoss にデプロイすると動作が異なります。ここで何が問題なのか知っている人はいますか?

4

1 に答える 1

4

JBoss は、http://stax.codehaus.org/Home の RI をSTAXプロバイダーに使用します。JDKはおそらくデフォルトでSJSXPを使用していると思います。

の動作はtoString()の API で指定されていないためXMLEvent、印刷のように感じるかは実装次第です。一部の実装は単純な old をダンプObject#toString()し、一部は XML などを書き出す可能性があります。事実上、javax パッケージ インターフェイスで指定されていない実装の詳細に依存しています。

開発環境で codehaus stax 実装を使用することにより、一貫した動作を得ることができますが、もちろんベンダー固有の機能を引き続き使用しています。

(この問題は、過去に Sun がプロバイダーを変更したときに、他の XML API にも忍び寄りました。壊れた!)

于 2011-05-03T19:50:16.000 に答える