JBoss 5.1.0のWARアプリケーションにいくつかのWebサービスをデプロイしようとしています。
JAX-WSツールwsgen
を使用して、既存のwsdlからソースファイルを作成しました。これにより、要求および応答ラッパーとして機能するサービスファイルと@XmlType注釈付きのクラスが作成されました。
このクラスはJBoss 4.2.3で正常に機能しましたが、JBoss 5.1.0に移行するとこの例外が発生します。
Java.lang.UnsupportedOperationException:setPropertyは、SOAPMessageのすべてのサブクラスによってオーバーライドされる必要があります
私の構成:
前もって感謝します!
間違っている可能性のあるものがいくつかありますので、私の場合に何が助けになったかをお伝えします(あなたに似て、JDK 1.6.0_13を使用していました)。
問題はJARの不一致にあります。まず、JBossがJDK 1.6を使用していることを確認し、Java_HOME envを確認します。変数。次に、クラスがJDK 1.6を使用してコンパイルされていることを確認します。 Eclipseからプロジェクトを実行する場合は、EclipseがJBossをEclipseから実行する場合と同じように、Eclipseが正しいJDKを使用していることを確認してください。
私はあなたがそれを正しく持っていると思うので、いくつかの魔法があります。クライアントの実行しない $ JBOSS_HOME/clientのライブラリを使用しますが、$ JBOSS_HOME/lib/endorsedで提供されるライブラリのみを使用します。明らかに、JPA、EJB、またはサーブレットなど、他のJAX-WSに関連しないAPIを使用している場合、それらをクラスパスに追加できますが、only lib/endorsed JAX-WS JARを使用します。
JBoss 5.1の場合、JBossの以前のバージョンでは他のいくつかのトリックが機能しました。たとえば、Java option -Dsun.lang.ClassLoader.allowArraySyntax = trueまたは/ and -Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsedクライアントとJBossを起動するとき。
JBoss 4.2.2からのアップグレードでも同じ問題が発生し、 JBoss 5.1.0リリースノート で答えが見つかりました。
JBossAS 5.0.0.GAはJava5とJava6の両方でコンパイルできます。 Java5でコンパイルされたバイナリは、プライマリ/推奨バイナリ配布です。厳密なテストが行われ、Java 5とa Java 6ランタイム。Java 6次のライブラリをJBOSS_HOME/clientディレクトリからJBOSS_HOME/lib/endorsedディレクトリに手動でコピーする必要があります。これにより、JBossWSでサポートされているJAX-WS 2.0 APIが使用されます。
- jbossws-native-saaj.jar
- jbossws-native-jaxrpc.jar
- jbossws-native-jaxws.jar
- jbossws-native-jaxws-ext.jar
Java 5(JDK 1.6.0_20で実行)でJBoss 5.1.0ビルドのディストリビューションを使用し、これらのJARを承認済みディレクトリに十分にコピーすることで問題が解決したことを確認しました。 Java 6のためにコンパイルしたバージョン
ただし、JBoss AS 5のJava 6コンパイル済みディストリビューションはまだ実験段階です。
SAAJ
jarとの競合の問題が原因である可能性があります。 Jboss
のSaaj
jarを{Jboss_HOME}/LIB
から{JBOSS_HOME}/lib/endorsed
にコピーします。これが問題の解決に役立つことを願っていますが、
JBoss
オプションが承認済みのライブラリを指している状態でjvm
を起動してください。これは、JBoss
を使用してEclipseからWTP
を起動する場合、デフォルトでは設定されませんが、コマンドラインからJBoss
を起動する場合です。
起動構成のVM引数に以下を追加できます。
-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed"
jarファイルをjboss/lib/endorsedフォルダーに移動してみてください
jbossws-native-jaxws.jar
jbossws-native-jaxrpc.jar
jbossws-native-saaj.jar
jbossws-native-saaj.jar
私のプロジェクトは単に以下に基づいていました:
私にとってうまくいったのは、CXFの隣にそれらのMaven依存関係を追加することでした:
<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>
それが役立つことを願っています!
これはこの問題へのリンクです: https://issues.jboss.org/browse/JBWS-2418
Jboss AS 4.3を使用します。私の場合、「deploy」フォルダーから「jbossws.sar」を削除しました。
この問題を参照してください: https://issues.jboss.org/browse/JBWS-2821
クライアントアプリケーションの実行中にクライアントでこのエラーが発生した場合、この answer の手順に加えて、同様の手順に従う必要があります。
JVMのどのインスタンスがアプリケーションを実行しているかを判断します。私の場合、JDKを使用するスタンドアロンアプリケーションとJREを使用するアプレットがありました。これは/path/jre/bin/
のような場所になります
このjarを answer からpath/jre/lib/endorsed
に追加します。 endorsed
ディレクトリを作成する必要がありました。
これは、VM言語のデフォルトの前にjboss固有の実装をロードするようにJavaに伝えます。これはbootstrapクラスローダーで発生します、クラスパス内のjarがロードされるかなり前。
Webアプリのlibフォルダーにsaaj-implを追加すると、このエラーが修正されました。 JBoss 4.2.3とCXF 2.4.10を使用しています。
Cxfディストリビューションから必要なlib(私の場合はsaaj-impl)をwarにコピーし、次のコンテンツの/WEB-INF/jboss-classloader.xmlファイルを使用してjbossクラスローダーの分離を有効にしました。
<classloading xmlns="urn:jboss:classloading:1.0"
domain="MyDomain"
export-all="NON_EMPTY"
import-all="true">
</classloading>
これが誰かに役立つことを願っています。
私のサーバー設定はJboss AS 4.2.1 GAで、以下のように動作します。
Lib\endorsedで使用したライブラリ。