java.lang.Classcastexception-Fehler: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl beim starten des weblogic
Als Teil unserer Anwendung verwenden wir die apache-xerces jaxp-parser. Wenn wir die Anwendung bereitstellen auf weblogic 9.2, bekommen wir die folgende Fehlermeldung.
org.springframework.Bohnen.factory.BeanCreationException: Fehler beim erstellen bean mit dem Namen 'org.apache.cxf.wsdl.WSDLManager' defined in class path resource [META-INF/cxf/cxf.xml]: Instanziierung der bean fehlgeschlagen; verschachtelte Ausnahme ist org.springframework.Bohnen.BeanInstantiationException: could not instantiate bean-Klasse [org.apache.cxf.wsdl11.WSDLManagerImpl]: Konstruktor warf Ausnahme; nested exception is java.lang.Classcastexception-Fehler: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
Gemäß unserer Analyse, weblogic versucht zu laden Ihre eigenen DocumentBuilderFactoryImpl
die in weblogic.jar anstelle von apache ' s xerces.
Wir haben versucht, das folgende zu zwingen, die weblogic laden DocumentBuilderFactoryImpl
von xerces
i) wir haben die folgende tag-in weblogic.xml
<prefer-web-inf-classes>true</prefer-web-inf-classes>
ii) haben wir die neuesten Versionen von xalan in jre/lib/endorced Ordner. dies trifft nicht lösen unser problem.
ii) haben wir Hinzugefügt, Einträge in weblogic-application.xml
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<application-param>
<param-name>webapp.encoding.default</param-name>
<param-value>UTF-8</param-value>
</application-param>
<prefer-application-packages>
<package-name>javax.jws.*</package-name>
<package-name>org.apache.xerces.*</package-name>
<package-name>org.apache.xerces.jaxp.*</package-name>
</prefer-application-packages>
</weblogic-application>
ii)Hinzugefügt, den folgenden Eintrag in weblogic-application.xml
<xml>
<parser-factory>
<saxparser-factory>org.apache.xerces.jaxp.SAXParserFactoryImpl</saxparser-factory>
<document-builder-factory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory>
<transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
</parser-factory>
</xml>
iii) Hinzugefügt jaxp.properties
zu laden DocumentBuilderFactoryImpl
von xerces, um die jre/lib und den server gestartet.In diesem Fall wird der weblogic didnt start.
iv) haben wir Dann zuerst den server und dann kopiert den jaxp.properties
- Datei während der Laufzeit, wenn der server startet.Aber kein Erfolg
Keiner der oben genannten für uns gearbeitet.
Jede Hilfe wird sehr geschätzt.
InformationsquelleAutor venkat | 2010-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast so viele Dinge, die verstehe ich nicht den genauen status. Mein Rat wäre, sich strikt an die Application Server Specific Configuration Guide für WebLogic, das habe ich schon erfolgreich in der Vergangenheit mit WLS 9.2.
Du wirst sicherlich mehr Pakete unter
prefer-application-packages
setup Weblogic ClassLoader-Filterung aber im aktuellen Zustand von der Frage, ist es unmöglich, eine präzise Antwort.Nur für den Fall, können Sie vielleicht versuchen, blind verwenden Sie die
weblogic-application.xml
aus dieser thread:Aber das ist ein Schuss im Dunkeln.
InformationsquelleAutor Pascal Thivent
Könnten Sie versuchen, erzwingen der Verwendung der angegebenen document builder factory als Kommandozeilen-option:
Dies ist unter der Annahme, dass Sie über die erforderlichen Xerces-builder factory-Klasse in den classpath.
Im Allgemeinen, sollten Sie nicht verwenden eine separate xerces.jar mehr, es sei denn dies ist von einigen legacy code. Der Xerces-parser-Klassen kommen mit der JRE, die package-Namen beginnen mit com.Sonne.org.apache anstelle von org.apache. Sie könnten auch versuchen,
und entfernen xerces.jar von Ihrem classpath zusammen (dies ist, was wir getan haben auf WLS 10.3 und Java 1.6).
InformationsquelleAutor MarkoU
Habe ich es geschafft, das Problem zu beheben DocumentBuilderFactory nicht gefunden mit der einfachen Lösung.
Versuchen, Sie zu kopieren xercesImpl.jar der domain-specific-lib auf weblogic MyDomain\Server\MyServer\lib.
InformationsquelleAutor ernesto
In meinem Fall das problem war, dass ich aus einer Abhängigkeit commons-digester die wiederum verwendet eine andere version von xerces (, die den Konflikt verursacht). So können Sie überprüfen Sie Ihre Abhängigkeiten im Fall eine andere version von xerces war transitiv enthalten.
InformationsquelleAutor Taras