これは、ここでの質問の続きです: 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 にコピーすることでした。これは必要ないように思えますが、必要です。
今説明した回避策を使用する以外に、これを機能させる方法はありますか?