我有一个服务器端Web应用程序代码,它使用mule来使用xml消息并进行一些处理。最近我转移到一个新的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.transformer.XmlToDomDocument:64(http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/transformer/TransformerException.html)
Root异常堆栈跟踪: java.lang.ClassCastException:org.apache.xerces.parsers.XIncludeAwareParserConfiguration无法强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration 在org.apache.xerces.parsers.DOMParser。(未知来源) 在org.apache.xerces.parsers.DOMParser。(未知来源) 在org.apache.xerces.jaxp.DocumentBuilderImpl。(未知来源) 在com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.createDocument(SAX2DOM.java:324)的org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(未知来源) 在com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM。(SAX2DOM.java:84) at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187) at 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) 在org.mule.module.xml.transformer.XmlToDomDocument.doTransform(XmlToDomDocument.java:58) at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:254)
我认为这是因为我的WEB-INF / lib导演中的xerces 2.9.1。我取出了罐子,它工作得很好。问题是我在我的lib中需要那个jar,因为lib中还有一些其他传统的第3个pary jar需要在classpath中使用xerces的版本。
Thnks
答案 0 :(得分:0)
Mule的AbstractXmlTransformer提供了多种配置选项,包括setXMLInputFactory
我认为可以帮助您实现目标。
问题是这些配置选项不是在XML级别提供的,因此您必须将XmlToDomDocument声明为自定义转换器,以便在其上设置不同的属性。