我正試圖在ESB服務器上設置應用程序。我們有一個OSGi包,包含了我們需要的所有依賴,但是我們現在有一個奇怪的問題。在運行時,服務器將無法實例化我們的應用服務器的CXF客戶端。堆棧跟蹤爲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的啓動時加載器都提供FleetManagementWSServiceService,服務,或兩者的實例,從而導致衝突我還沒有看到這個特殊的堆棧跟蹤。
聽起來像WSO2的啓動類加載器和我的OSGi包的類加載器都提供了FleetManagementWSServiceService,Service或兩者。據推測它必須是Service,因爲即使我不小心將這個類放入了一個可以被啓動類加載器拾取的jar中,那麼OSGi包中的那個也應該始終受到青睞。
其他類javax.xml.ws.Service包含在Java運行時以及其他一些jar中。我在服務器的背書文件夾中發現了一個geronimo jaxws jar,並將其刪除以防萬一,但這並未影響構建。
我沒有看到此堆棧跟蹤中涉及的CXF。看來你正在使用Axis2。請更新您的問題。 –
CXF的唯一相關性在於CXF客戶端實例化時發生此異常。 FleetManagementWSServiceService是一個自動生成的CXF服務,因此它擴展了javax.xml.ws.Service。我認爲這個問題的根源是WSO2服務器中的依賴關係衝突,但我無法弄清楚。 –