私は、ミュールを使用してxmlメッセージを消費し、いくつかの処理を行うサーバー側のWebアプリコードを持っています。最近、新しい Tomcat バージョンに移行しました。mule が xml を dom に変換しようとしているときに、次のエラーが表示されます。
Exception Stack trace:
1. org.apache.xerces.parsers.XIncludeAwareParserConfiguration は org.apache.xerces.xni.parser.XMLParserConfiguration にキャストできません (java.lang.ClassCastException) org.apache.xerces.parsers.DOMParser:-1 (null) 2. org.apache.xerces.parsers.XIncludeAwareParserConfiguration は org.apache.xerces.xni.parser.XMLParserConfiguration (java.lang.ClassCastException) (org.mule.api.transformer.TransformerException) org.mule.module.xml にキャストできません。トランスフォーマー.XmlToDomDocument:64 (http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/transformer/TransformerException.html)
ルート例外スタック トレース: java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration は、org.apache.xerces.parsers.DOMParser で org.apache.xerces.xni.parser.XMLParserConfiguration にキャストできません (不明なソース) org.apache.xerces.parsers.DOMParser.(不明なソース) org.apache.xerces.jaxp.DocumentBuilderImpl.(不明なソース) org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(不明なソース) com.sun .org.apache.xalan.internal.xsltc.trax.SAX2DOM.createDocument(SAX2DOM.java:324) com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.(SAX2DOM.java:84) でcom.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187) (com.sun.org.apache.xalan.internal)。xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:298) at org.mule.module.xml. org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:254) でのTransformer.XmlToDomDocument.doTransform(XmlToDomDocument.java:58)
これは、WEB-INF/lib ディレクトリの xerces 2.9.1 が原因で発生していると考えました。私は瓶を取り除きました、そしてそれはすべてうまくいきました。問題は、クラスパスに xerces のそのバージョンを必要とする lib に他のレガシー 3rd pary jar があるため、lib にその jar が必要であることです。
- 別の DOM パーサーを指定して、ラバにクラスパスからそれを取得させる方法はありますか。
- xerces Java doc を確認しました。XIncludeAwareParserConfiguration は XMLParserConfiguration を実装しています。なぜクラスキャストを投げているのだろうか?
ありがとう