2015-04-02 73 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