webentwicklung-frage-antwort-db.com.de

setProperty muss von allen Unterklassen von SOAPMessage überschrieben werden

Ich versuche, einige Webdienste in einer WAR-Anwendung unter JBoss 5.1.0 bereitzustellen.

Ich habe die Quelldateien mit einem JAX-WS-Tool wsgen aus einem vorhandenen Wsdl erstellt. Dadurch wurden die Servicedateien und @XmlType-kommentierten Klassen erstellt, die als Anfrage- und Antwort-Wrapper fungieren würden.

Diese Klassen haben in JBoss 4.2.3 gut funktioniert, aber wenn ich zu JBoss 5.1.0 wechsle, bekomme ich diese Ausnahme.

Java.lang.UnsupportedOperationException: setProperty muss von allen Unterklassen von SOAPMessage überschrieben werden

Meine Konfiguration:

  • Windows XP SP3 (aber unter Vista genauso wie unter Linux)
  • Sun JDK 1.6.0_17
  • JBoss 5.1.0 GA für jdk6

Danke im Voraus!

35
Pablo Venturino

Es gibt ein paar Dinge, die möglicherweise schief gehen. Ich werde Ihnen sagen, was in meinem Fall geholfen hat (analog zu Ihrem Fall habe ich JDK 1.6.0_13 verwendet).

Das Problem liegt in der Nichtübereinstimmung von JARs. Stellen Sie zunächst sicher, dass JBoss JDK 1.6 verwendet, und überprüfen Sie Ihre Java_HOME-Umgebung. Variable. Vergewissern Sie sich zweitens, dass Ihre Klassen mit JDK 1.6 erstellt wurden. Wenn Sie Ihr Projekt von Eclipse aus ausführen, stellen Sie sicher, dass Eclipse das richtige JDK verwendet. Dies gilt auch, wenn Sie JBoss in Eclipse ausführen.

Ich denke, Sie haben es richtig, also kommt etwas Magie. Laufender Client nicht Bibliotheken von $ JBOSS_HOME/client verwenden, aber nur die in $ JBOSS_HOME/lib/endorsed angegebenen verwenden. Wenn Sie eine andere JAX-WS-unabhängige API wie JPA, EJB oder Servlets verwenden, können Sie diese natürlich zum Klassenpfad hinzufügen. Verwenden Sie jedoch nur only lib/endorsed JAX-WS-JARs.

Es hat in meiner speziellen Situation im Fall von JBoss 5.1 geholfen, in früheren Versionen von JBoss haben ein paar andere Tricks funktioniert. Versuchen Sie beispielsweise, die Java-Option - Dsun.lang.ClassLoader.allowArraySyntax = true oder/und -Djava.endorsed hinzuzufügen .dirs = $ JBOSS_HOME/lib/endorsed beim Starten Ihres Clients und von JBoss.

32

Ich hatte das gleiche Problem mit einem Upgrade von JBoss 4.2.2 und fand die Antwort in den JBoss 5.1.0 Versionshinweisen :

JBossAS 5.0.0.GA kann sowohl mit Java5 als auch mit Java6 kompiliert werden. Die kompilierte Java5-Binärdatei ist unsere primäre/empfohlene Binärdistribution. Es wurde strengen Tests unterzogen und kann sowohl unter Java 5 als auch unter Java 6 ausgeführt werden. Wenn Sie unter Java 6 ausgeführt werden, müssen Sie die folgenden Bibliotheken manuell aus dem Verzeichnis JBOSS_HOME/client in das Verzeichnis JBOSS_HOME/lib/endorsed kopieren, damit die von JBossWS unterstützten JAX-WS 2.0-APIs verwendet werden:

  • jbossws-native-saaj.jar
  • jbossws-native-jaxrpc.jar
  • jbossws-native-jaxws.jar
  • jbossws-native-jaxws-ext.jar

Ich habe die Distribution von JBoss 5.1.0 build mit Java 5 (ausgeführt unter JDK 1.6.0_20) verwendet, und das Kopieren dieser JARs in das bestätigte Verzeichnis hat dieses Problem behoben. Wir verwenden die für Java 6 kompilierte Version aufgrund der folgenden Anmerkung nicht:

Es ist jedoch zu beachten, dass sich die mit Java 6 kompilierte Distribution von JBoss AS 5 noch im experimentellen Stadium befindet.

23
phatblat

Möglicherweise liegt ein Konflikt mit SAAJ jar vor. Kopieren Sie die Variable Jboss von Saaj von {Jboss_HOME}/LIB in {JBOSS_HOME}/lib/endorsed. Ich hoffe, dies würde bei der Lösung des Problems helfen.

7
user447390

Stellen Sie sicher, dass Sie JBoss mit den Optionen jvm starten, die auf die endorsed libs zeigen .. _. Dies ist nicht standardmäßig konfiguriert, wenn Sie JBoss von Eclipse mit WTP starten. Dies ist jedoch der Fall, wenn Sie JBoss von der Befehlszeile starten.

Sie können den VM - Argumenten der Launch Configuration Folgendes hinzufügen:

-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed"
4
user538000

versuchen Sie es mit jars in Ihrem Ordner jboss/lib/endorsed 

jbossws-native-jaxws.jar
jbossws-native-jaxrpc.jar
jbossws-native-saaj.jar
jbossws-native-saaj.jar
2
user1397770

Mein Projekt basierte einfach auf:

  • CXF 2.5.0 (Soap WebService Consumer)
  • WAR-Versammlung (kein EAR)
  • kein jboss-web
  • kein jboss-classloading
  • keine Änderungen in jboss/lib/bestätigt (nur xalan, serializer, xercesImpl)
  • läuft auf jboss-4.2.1.GA + JDK 1.6

Was für mich funktionierte, war, neben CXF einfach diese Maven-Abhängigkeiten hinzuzufügen:

    <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
    </dependency>
    <dependency>
        <groupId>com.Sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
    </dependency>
    <dependency>
        <groupId>com.Sun.xml.ws</groupId>
        <artifactId>jaxws-tools</artifactId>
    </dependency>
    <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>woodstox-core-asl</artifactId>
    </dependency>
    <dependency>
        <groupId>com.Sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
    </dependency>

Hoffe es wird helfen!

1
Donatello

Dies ist der Link zu dieser Ausgabe: https://issues.jboss.org/browse/JBWS-2418

0
Vadzim

Ich verwende Jboss AS 4.3 ..__ In meinem Fall entfernte ich aus dem "deploy" -Ordner die "jbossws.sar".

Siehe diese Ausgabe: https://issues.jboss.org/browse/JBWS-2821

0
Tiago PC

Wenn dieser Fehler beim Ausführen einer Clientanwendung im Client auftritt, müssen Sie ähnliche Schritte zusätzlich zu denen in diesem answer ausführen:

  1. Bestimmen Sie, in welcher Instanz der JVM die Anwendung ausgeführt wird. In meinem Fall hatte ich Standalone-Anwendungen mit dem JDK und Applets mit der JRE. Dies wird irgendwo wie /path/jre/bin/ sein

  2. Fügen Sie die Gläser aus diesem answer zu path/jre/lib/endorsed hinzu. Ich musste das Verzeichnis endorsed erstellen.

Dies weist den VM an, die jboss-spezifischen Implementierungen vor den Java-Standardeinstellungen zu laden. Dies geschieht im Bootstrap-Klassenladeprogramm, lange bevor die Jars im Klassenpfad geladen werden.

0
Steve Jackson

Dieser Fehler wurde durch Hinzufügen von saaj-impl zum lib-Ordner meiner Web-App behoben. Ich verwende JBoss 4.2.3 und CXF 2.4.10.

0
NVN

Ich habe die notwendige lib (saaj-impl in meinem Fall) von cxf-Distribution in meinen Krieg kopiert und die Isolation von jboss classloader mit der Datei /WEB-INF/jboss-classloader.xml des folgenden Inhalts aktiviert: 


<classloading xmlns="urn:jboss:classloading:1.0"
    domain="MyDomain"
    export-all="NON_EMPTY"
    import-all="true">
</classloading>

Hoffe, dass jemandem geholfen wird.

0
jnr

Meine Serverkonfiguration ist Jboss AS 4.2.1 GA und wie unten funktioniert es;

Bibliotheken, die ich bei lib\endorsed verwendet habe;

  • JAXWS2.1.1_20070501
  • jbossws-native-jaxrpc
  • jbossws-native-jaxws
  • jbossws-native-jaxws-ext
  • jbossws-native-saaj
  • serialisierer
  • xalan
  • xercesImpl
0
volkan