【发布时间】:2014-12-09 06:23:21
【问题描述】:
我正在尝试将 Jersey 2.13 Web 服务部署到 Weblogic 12.1.1。此版本的 weblogic 符合 JSR-311 JAX-RS 1.1 规范,而 Jersey 2.x 提供 JAX-RS 2.0 的实现
Oracle 有关于如何升级 Jersey JAX-RS RI 版本的说明: http://docs.oracle.com/cd/E24329_01/web.1211/e24983/version.htm
然而,即使这样也无助于解决所有的部署问题。
我将应用程序打包到包含 WAR 的 EAR 中。为了覆盖 weblogic jar,我添加了以下 weblogic-application.xml 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<prefer-application-packages>
<!-- apis -->
<package-name>javax.ws.rs.*</package-name>
<!-- guava -->
<package-name>com.google.common.*</package-name>
<!-- jersey1 providers -->
<package-name>com.sun.jersey.*</package-name>
<!-- media providers -->
<package-name>org.eclipse.persistence.jaxb.rs.*</package-name>
<package-name>org.codehaus.jackson.jaxrs.*</package-name>
<!-- wls -->
<package-name>weblogic.jaxrs.api.client.*</package-name>
<package-name>weblogic.jaxrs.internal.api.client.*</package-name>
<package-name>weblogic.jaxrs.dispatch.*</package-name>
<package-name>weblogic.jaxrs.monitoring.util.*</package-name>
</prefer-application-packages>
</weblogic-application>
此配置在部署时给我以下错误消息:
Caused By: 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;
如果我尝试通过将 org.glassfish.hk2.* 类添加到 prefer-application-packages 来替换它,我会收到新的错误并且它会永远持续下去......
有人在 weblogic 12.1.1 或更低版本上将 Jersey 迁移到 2.x 版吗?
谢谢!
【问题讨论】:
-
您找到解决方案了吗?我遇到了同样的错误,但它是随机发生的。有时库会被覆盖,有时不会。
-
嘿,@retrodev,是的,我会在下面发布我的 weblogic-application.xml 作为答案。
标签: java web-services jersey weblogic jax-rs