Ich verwende Wildfly 8.2.0 und einige XML Config File Parsing. Die Idee ist, dass ich meine gebündelte xercesImpl.jar verwenden kann, um die JAXP SAXParserFactoryImpl bereitzustellen.ClassNotFound: Xerces SAXParserFactoryImpl bei der Ausführung in Wildfly 8.2
Wenn ich die Logik außerhalb von Wildfly ausführe, bin ich erfolgreich in der Lage, mit dem SAXParserFactoryImpl zu analysieren. Diese Fabrik, indem die Systemeigenschaft gefunden wird:
System.setProperty("javax.xml.parsers.SAXParserFactory",
"org.apache.xerces.jaxp.SAXParserFactoryImpl");
SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
Nach meiner EAR bereitstellen, erhalte ich folgende Fehlermeldung:
...: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found.
..
..
...: Caused by: java.lang.ClassNotFoundException: org/apache/xerces/jaxp/SAXParserFactoryImpl
..
..
Zu wissen, dass Wildfly seine eigene Xerces läuft von Wildfly/modules/system/Schichten /base/org/apache/xerces/main/xercesImpl-2.9.1-jbossas2.jar, habe ich versucht, die folgenden:
[1] Verwendung Wildfl y des xercesImpl-2.9.1-jbossas2.jar ... keine Änderung
(Quelle: Wildfly Dokumentation für Jboss-Deployment-structure.xml)
In jboss-Deployment-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
...
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
...(removed xercesImpl.jar)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
Ignorieren [2] Wildfly des xercesImpl-2.9.1-jbossas2.jar ... keine Änderung
(Quelle: https://developer.jboss.org/thread/259010?start=0&tstart=0)
In jboss-Deployment-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="org.apache.xerces" />
</exclusions>
...
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
xercesImpl.jar
...(many more jars)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
[3] umfassen Explizit Wildfly des xerces als Modul ... keine Änderung
(Quelle: https://developer.jboss.org/thread/239969)
In jboss-Deployment-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<dependencies>
<module name="org.apache.xerces" />
...
</dependencies>
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
...(removed xercesImpl.jar)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
[4] Java-Eigenschaft für JAXP Parser deklarieren ...keine Änderung
wenn Wildfly Start:
./standalone.sh -c standalone-full.xml -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
im Standalone-full.xml
<system-properties>
<property name="javax.xml.parsers.SAXParserFactory" value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
</system-properties>
(Hinweis: Versucht diese Eigenschaft mit Versuchen [1], [2], [3]
)
[5] Das Hinzufügen Xerces Pfad jboss-deplo tigung-Struktur ... keine Änderung
(Quelle: developer.jboss.org/message/717927#717927)
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
<system>
<paths>
<path name="org/apache/xerces/jaxp"/>
</paths>
</system>
...
</dependencies>
</deployment>
</jboss-deployment-structure>