質問

これはここでの質問の続きです。JBoss - アプリはJBOSSが実行されているのと同じjdkでコンパイルする必要がありますか?

しかし、それは十分に異なっているので、新たな質問が必要でした。

jdk6 を使用して JBOSS 5.1 を実行しようとしていますが、JBOSS 5.1 の JDK6 バージョンをダウンロードしました。これは正常に動作し、EAR アプリケーションは正常にデプロイされます。ただし、次のようなコードを使用して Web サービス クライアントを実行したい場合:

public static void main(String[] args) throws Exception {
    System.out.println("creating the web service client...");
    TestClient client = new TestClient("http://localhost:8080/tc_test_project-tc_test_project/TestBean?wsdl");
    Test service = client.getTestPort();
    System.out.println("calling service.retrieveAll() using the service client");
    List<TestEntity> list = service.retrieveAll();
    System.out.println("the number of elements in list retrieved using the client is " + list.size());
}

次の例外が発生します。

javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
    at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:396)
    at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170)
    at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)

今、 ここが本当に興味深い部分です. 。上記のコードが実行されている JDK を JDK6 から JDK5 に変更すると、上記の例外は解消されます。本当に不思議ですね。

上記のコードを JDK6 で実行するために私が見つけた唯一の方法は、JBOSS_HOME/lib/endorsed フォルダーを取得して JDK6_HOME/lib にコピーすることでした。これは必要ないように思えますが、実際には必要です。

先ほど説明した回避策を使用する以外に、これを機能させる方法はありますか?

役に立ちましたか?

解決

おおよそ、JDK 1.6 の公式機能として JAX-WS の存在に遭遇したかのように見えます。「lib」にコピーするのではなく、「endorsed」ディレクトリ (java.endorsed.dirs にリストされているディレクトリ) にコピーしてください。 これ 役立つかもしれません。

最新の 1.6 を使用している場合は、次の方法と同じ方法でこれを回避できます。 アパッチCXF そうです。1.6 環境で CXF を使用する方法については、ドキュメントを参照してください。

他のヒント

それぞれのセクションにはさまざまな提案と説明があります。 バグレポート およびその他の場所(例: ここ そして ここ)。それらがどの程度うまく機能するかはわかりません。

この問題に関する情報は、JBoss 公式インストールおよび入門ガイドに記載されています。http://docs.jboss.org/jbossas/docs/ Installation_And_Getting_Started_Guide/5/html/ Installation_Alternatives.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top