2

私の問題は、CXF と wsdl4j_1.6.2.jar が何か、おそらく axis-wsdl4j.jar と衝突することに関係しています。

私は読みました: Apache CXF クライアントの何が問題なのですか?

私のプロジェクトには、戦争に axis-wsdl4j.jar が含まれていません。また、管理者に Websphere を Parent Last に切り替えるよう依頼しました。私はまだこれを取得します:

[12/13/12 16:01:28:378 CST] 0000001b ServletWrappe E SRVE0068E: サーブレットのサービス メソッドの 1 つでキャッチされない例外がスローされました: CXFServlet。スローされる例外: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: javax/wsdl/xml/WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;) Ljavax/wsdl /意味; org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage (AbstractFaultChainInitiatorObserver.java:116) で org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:322) で(ChainInitiationObserver.java:122) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211) org.apache.cxf.transport.servlet で。267) com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) で com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) で.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) com.ibm.io.async.AsyncChannelFuture $1.run(AsyncChannelFuture.java:205) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 原因: org.apache.cxf.interceptor.Fault: javax/wsdl/xml/ WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; org.apache.cxf.service.invoker.AbstractInvoker で。createFault(AbstractInvoker.java:162) org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167) org .apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:94) org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage( ServiceInvokerInterceptor.java:94) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) ... 26 以上原因: java.lang.NoSuchMethodError: javax/wsdl/xml/WSDLReader.readWSDL(Ljavax /wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.

プロジェクトは Maven によってビルドされ、Continuum のみを介して Websphere にデプロイされます。すべての設定はリクエストによって変更されます。アプリケーションは、ローカルの Tomcat で完全に実行されます。

編集:これは最終的に次の方法で修正されました:

  1. wsdl4j.jar を /usr/WebSphere/AppServer/appLibs/APPNAME ディレクトリーにコピーします。
  2. 前の Chmod 775。
  3. Websphere 管理コンソール、環境 (左側)、共有ライブラリーで、上記の APPNAME という名前のコンテナー全体の共有ライブラリーを定義します。
  4. jar を共有ライブラリのクラスパスに追加します。
  5. サーバー (左側)、APPNAME Java、プロセス管理、クラス ローダー、および「最初にアプリケーション クラス ローダーでロードされたクラス」を確認します。
  6. クラスローダーをクリックして、共有ライブラリをそれに割り当てます。
  7. サーバーを再起動する
4

2 に答える 2

0

Jaxwsエンジンを無効にする必要があると思います

以下のようにJVMプロパティを設定してみてください

com.ibm.websphere.webservices.DisableIBMJAXWSEngine=true
于 2012-12-13T22:42:10.343 に答える
0

これが私がすることです。

WASランタイムで冗長クラスのロードをオンにして、WSDLReaderを含むJARを確認します。

これが、詳細なクラスのロードに基づいて、実行時に(最初に)使用されると予想されたJARであるかどうかを確認します。

HTH

于 2012-12-14T00:59:41.627 に答える