簡體   English   中英

java.lang.AbstractMethodError:將Weblogic升級到12c(12.1.3.0.0)后在Jersey Rest Webservice上調用

[英]java.lang.AbstractMethodError: on Jersey Rest Webservice call after upgrading Weblogic to 12c (12.1.3.0.0)

在將Weblogic升級到Weblogic 12C-12.1.3.0.0之后,應用程序的一部分使用Jersey Client 2.15調用REST Web服務停止工作。

我們得到的異常跟蹤是:

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)

我們確定它是Jersey和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>

我們不再意識到使用上面的堆棧跟蹤跟蹤應用程序日志會產生誤導。 因此,我們開始研究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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM