问题描述
我正在尝试将Jersey 2.13 Web服务部署到Weblogic 12.1.1。此版本的weblogic符合JSR-311 JAX-RS 1.1规范,而Jersey 2.x提供JAX-RS 2.0的实现
I'm trying to deploy Jersey 2.13 web services to Weblogic 12.1.1. This version of weblogic is compliant with JSR-311 JAX-RS 1.1 specification whereas Jersey 2.x provides implementation for JAX-RS 2.0
Oracle有关于如何升级的说明Jersey JAX-RS RI的版本:
Oracle has an instruction on how to upgrade the version of Jersey JAX-RS RI :http://docs.oracle.com/cd/E24329_01/web.1211/e24983/version.htm
然而即使这样也无助于解决所有部署问题。
However even this doesn't help solving all of the deployment issues.
我在包含WAR的EAR中打包应用程序。为了覆盖weblogic jar,我添加了以下 weblogic-application.xml 文件:
I'm packaging the application in EAR containing WAR. In order to override weblogic jars I've included added the following weblogic-application.xml file :
<?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>
此配置在部署时给出以下错误消息:
This configuration gives me a following error message on deployment :
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 我收到了新的错误,并且它一直在继续...
If I try to replace org.glassfish.hk2.* classes by adding it to prefer-application-packages I receive new errors and it's continuing forever...
有没有人将Jersey迁移到weblogic 12.1.1或更低版本的2.x版本?
Has anyone migrated Jersey to version 2.x on weblogic 12.1.1 or below?
谢谢!
推荐答案
最后结果证明你实际上必须更换比甲骨文建议更多的罐子。这是我的weblogic-application.xml的样子:
In the end it turned out that you actually have to replace more jars than Oracle suggests. Here's what my weblogic-application.xml looks like :
<prefer-application-packages>
<package-name>com.sun.jersey.*</package-name>
<package-name>org.glassfish.jersey.*</package-name>
<package-name>org.glassfish.hk2.*</package-name>
<package-name>org.jvnet.hk2.*</package-name>
<package-name>jersey.repackaged.org.objectweb.asm.*</package-name>
<package-name>com.sun.research.ws.wadl.*</package-name>
<package-name>com.sun.ws.rs.ext.*</package-name>
<package-name>org.codehaus.jackson.*</package-name>
<package-name>com.fasterxml.jackson.*</package-name>
<package-name>org.codehaus.jettison.*</package-name>
<package-name>javax.ws.rs.*</package-name>
<package-name>org.objectweb.asm.*</package-name>
<package-name>antlr.*</package-name>
</prefer-application-packages>
希望有所帮助。
这篇关于在Weblogic 12.1.1上使用Jersey 2.x Web服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!