2015-04-02 60 views
0

我們的應用程序的一部分,其要求使用Jersey客戶端2.15 REST Web服務停止工作後,我們升級了我們的Weblogic到Weblogic 12C - 12.1.3.0.0。java.lang.AbstractMethodError:澤西休息Web服務調用的Weblogic升級到12C後(12.1.3.0.0)

我們得到的異常跟蹤是:

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 
    at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:71) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:185) 
    at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:70) 

我們確信,這是新澤西州和Weblogic的WS庫之間的javax.ws.rs不匹配。

依賴

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>2.15</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-common</artifactId> 
    <version>2.15</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>javax.ws.rs-api</artifactId> 
    <version>2.0.1</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.connectors</groupId> 
    <artifactId>jersey-apache-connector</artifactId> 
    <version>2.15</version> 
</dependency> 

回答

0

不再我們才意識到按照我們上述的堆棧跟蹤應用程序日誌是誤導。所以我們開始研究Weblogic日誌。域日誌事實上已經給了一個完全不同的堆棧跟蹤:

java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.create(Ljava/lang/String;Lorg/glassfish/hk2/api/ServiceLocator;Lorg/glassfish/hk2/extension/ServiceLocatorGenerator;Lorg/glassfish/hk2/api/ServiceLocatorFactory$CreatePolicy;)Lorg/glassfish/hk2/api/ServiceLocator; 
    at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138) 
    at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:109) 
    at org.glassfish.jersey.internal.RuntimeDelegateImpl.<init>(RuntimeDelegateImpl.java:63) 
    at 

因此,一些消防與weblogic.xml和封裝玩耍後覆蓋問題進行了排序。以下是實際解決問題的最終包裝覆蓋:

<wls:package-name>com.sun.jersey.*</wls:package-name> 
    <wls:package-name>org.glassfish.jersey.*</wls:package-name> 
    <wls:package-name>org.glassfish.hk2.*</wls:package-name> 
    <wls:package-name>org.jvnet.hk2.*</wls:package-name> 
    <wls:package-name>jersey.repackaged.org.objectweb.asm.*</wls:package-name> 
    <wls:package-name>org.objectweb.asm.*</wls:package-name> 
    <wls:package-name>com.sun.ws.rs.ext.*</wls:package-name> 
    <wls:package-name>javax.ws.rs.*</wls:package-name> 
+0

謝謝您分享您的解決方案。我在Weblogic 12.1.3上遇到類似的問題以部署更新版本的球衣。你可以發佈你的整個weblogic.xml配置嗎? – 2015-06-19 09:13:53