1

Axis2、WebSphere8、Java 1.6 を使用して公開されたサービス用の JAX WS クライアントを作成しようとしています。スタンドアロン クライアント (つまり、ローカル マシンで実行されているクライアント) は正常に動作しますが、同じ Websphere サーバーで実行されているアプリケーションにクライアントを展開すると、エラーが発生 java.lang.ClassCastException: Cannot cast class org.apache.axis2.jaxws.spi.Provider to class javax.xml.ws.spi.Provider します。 OpenPortType service = OpenService .create(wsdlFile.toURL(), new QName( "http://www.test.com/schemas/public/open-api/Open/","OpenService")).getPort( OpenPortType.class);

私がグーグルしようとしたとき、weblogicに同様の問題が存在することがわかりました: https : //wso2.org/jira/browse/CARBON-4835 axis2.jaxws.spi.Providerクラスのソースを見ると、それがjavax.xml.ws.spi.Provider !! 何が間違っているのだろうか?何か案が ?

4

1 に答える 1

0

単純に JAX-WS API を使用するのではなく、Axis2 の機能を直接呼び出す場合を除き、Axis を EAR にパッケージ化する必要はありません。WebSphere は独自の JAX-WS 実装を提供していますが、これは、アプリにデプロイした別の JAX-WS 実装と競合することに驚きません。(特に、WebSphere 独自の実装は Axis2 に基づいていることに注意してください。)

別の実装をデプロイする必要がある場合は、少なくとも WebSphere クラスローダー ポリシーを parent_last に調整する必要があります。やるべきことは他にもあるかもしれません。私たちがこれを自分たちでやったのは久しぶりです。しかし、組み込みの JAX-WS 実装を使用する方がはるかに簡単でクリーンです。つまり、これらの jar をまったくデプロイしません。

于 2012-07-17T15:39:11.707 に答える