XPath-Auflösung der Klasse in JBoss5

Ich habe eine harte Zeit, herauszufinden, wo das problem herkommt, also ich bin dieses posting, in der Hoffnung, dass andere vielleicht auch was ähnliches gefunden, um diese an anderer Stelle und sind freundlich genug, zu teilen Ihre Einsicht.

Ich bin mit einem JBoss-5.0.1.GA application server läuft auf der Spitze eines Sun Java 1.6.0-13 JDK. Für die war-Datei in den generierten Web-Service, ich benutze ein Axis2 1.4 WS-Motor, dessen JAR-Dateien eingefügt werden, indem Eclipse Galileo in das Projekt WEB-INF/lib - Verzeichnis bei der Erstellung des Webservice-von den gegebenen "worker" - Klasse in das Dynamische Web-Projekt. Die relevanten code-snippet folgt:

String sUrl = "http://example.com/datafile.xml";
String sPath = "/some/xpath/string";
InputStream input = new URL(sUrl).openStream();
InputSource source = new InputSource(input);
DocumentBuilderFactory docFact = DocumentBuilderFactory.newInstance();
docFact.setNamespaceAware(false);
DocumentBuilder parser = docFact.newDocumentBuilder();
Document doc = parser.parse(source);
XPath xpath = XPathFactory.newInstance().newXPath();
//error occurs here:
String result = (String) xpath.evaluate(path,doc,XPathConstants.STRING);
input.close();

Dies ist der Fehler, ich bin immer von der JBoss-log:

java.lang.LinkageError: loader-constraint-Verletzung: beim auflösen Feld "STRING" die Klasse loader (Instanz von org/jboss/classloader/spi/base/BaseClassLoader) des referenzierenden Klasse javax/xml/xpath/XPathConstants, und der class-loader (Instanz <bootloader>) für das Feld ist gelöst type, javax/xml/namespace/QName, haben die verschiedenen Klassen von Objekten für diesen Typ

Ich könnte Verwendung der XPath.evaluate(String,Document) — jedoch gibt es Gelegenheiten, wo ich brauche, um (zum Beispiel) eine XPathConstants.NODESET statt, so ist es ein no-go. Ich habe auch versucht zu fummeln, ein wenig durch littering einige jboss-web.xml Dateien, die hier und da in der war-Datei, jedoch ohne Wirkung.

Was ich versuche, zu verstehen ist:

  • Wo könnte der Fehler kommen? Die JBoss-class-loader? Einige seltsame Interaktion zwischen JBoss und Sun JDK? Einige Verrücktheit eingeführt von Eclipse beim erstellen der Web Service? Vielleicht einige Verwirrung, eingeführt durch die Axis2 Bibliotheken bereitgestellt in den KRIEG?
  • Ich gefunden habe, die Instanzen von kompilierten class-Dateien in dem, was aussieht, wie ein triple-whammie:
    • Sun JDK (Datei rt.jar);
    • JBoss-Bibliotheken ($JBOSS_HOME/lib/endorsed/stax-api.jar); und
    • Axis2-Bibliotheken bereitgestellt ($JBOSS_HOME/server/deploy/MyProject.ear/MyProject.war/WEB-INF/lib/axis2-saaj-api-1.4.jar und woden-impl-dom-1.0M8.jar).
  • Wie soll ich da genau konfigurieren Sie JBoss, um mitzuteilen, welche Klassen es ist OK, um das laden aus der "anderen" Bibliotheken aus? Insbesondere die jaxax.xml.namespace.QName ist die Ursache der Trauer.

Vielen Dank im Voraus.

  • Beachten Sie auch, dass in der JDK ' s rt.jar die javax.xml.xpath.XPath ist ein interface, daher muss es umgesetzt werden elsehwere...
InformationsquelleAutor jbatista | 2010-07-14
Schreibe einen Kommentar