ESBサーバーでアプリケーションを設定しようとしています。私たちには必要なすべての依存関係を持つOSGiバンドルがありますが、現在は奇妙な問題があります。実行時に、サーバーはCXFクライアントをアプリケーションサーバー用にインスタンス化できません。スタックトレースは、それは両方の紛争で、その結果、FleetManagementWSServiceService、サービス、またはその両方のインスタンスを提供しているWSO2のブートアップクラスローダーのように見える前に、私は、この特定のスタックトレースを見ていないCXFクライアントとのリンクエラー
java.lang.LinkageError: loader constraint violation: when resolving method "javax.xml.ws.Service.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;)V" the class loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) of the current class, mil/sddc/fltmgt/ws/api/FleetManagementWSServiceService, and the class loader (instance of <bootloader>) for resolved class, javax/xml/ws/Service, have different Class objects for the type <init> used in the signature
at mil.sddc.fltmgt.ws.api.FleetManagementWSServiceService.<init>(FleetManagementWSServiceService.java:39)
at mil.sddc.ibs.mediators.fleetManagement.TestClient.mediate(TestClient.java:28)
at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
at org.apache.synapse.rest.Resource.process(Resource.java:297)
at org.apache.synapse.rest.API.process(API.java:341)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
です。
WSO2のブートアップクラスローダーのようで、OSGiバンドルのクラスローダーはFleetManagementWSServiceService、Service、またはその両方を提供しています。おそらく、OSGiバンドル内のクラスが常に優先されるべきであるように、私が誤ってそのクラスをブートアップクラスローダーによって拾われる瓶に入れたとしても、それはサービスでなければならないでしょう。
もう1つのクラスjavax.xml.ws.Serviceは、Javaランタイムと他のいくつかのjarファイルに含まれています。私はgeronimo jaxws jarファイルをサーバー上の承認済みフォルダに置いて、それを削除しましたが、これはビルドには影響しませんでした。
このスタックトレースにCXFが関わっていません。 Axis2を使用しているようです。あなたの質問を更新してください。 –
CXFの唯一の関連性は、この例外がCXFクライアントのインスタンス化で発生することです。 FleetManagementWSServiceServiceは自動生成されたCXFサービスで、javax.xml.ws.Serviceを継承します。問題の根源はWSO2サーバーの矛盾する依存関係だと私は信じていますが、私はどれを把握できません。 –