Using Jersey 2.x web service on Weblogic 12.1.1

若如初见. 提交于 2019-11-29 07:09:47

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>

Hope it helps.

For those who would like to use even newer version of Jersey (works with 2.15 up to 2.20, which is currently in a SNAPSHOT version), this is another version of weblogic.xml. Note that this set of package names is determined by single dependency to

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
</dependency>

File weblogic.xml (includes also resources, which is not covered in AndreyBavt's answer and not even in the official doc):

<wls:container-descriptor>
    <wls:prefer-application-packages>
        <!-- jsr311 -->
        <wls:package-name>javax.ws.rs.*</wls:package-name>
        <!-- javassist -->
        <wls:package-name>javassist.*</wls:package-name>
        <!-- aop repackaged -->
        <wls:package-name>org.aopalliance.*</wls:package-name>

        <!-- jersey 2 -->
        <wls:package-name>jersey.repackaged.*</wls:package-name>
        <wls:package-name>org.glassfish.jersey.*</wls:package-name>
        <wls:package-name>com.sun.research.ws.wadl.*</wls:package-name>

        <!-- hk2 -->
        <wls:package-name>org.glassfish.hk2.*</wls:package-name>
        <wls:package-name>org.jvnet.hk2.*</wls:package-name>
        <wls:package-name>org.jvnet.tiger_types.*</wls:package-name>
    </wls:prefer-application-packages>

    <wls:prefer-application-resources>
        <wls:resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</wls:resource-name>
        <wls:resource-name>META-INF/services/javax.ws.rs.ext.RuntimeDelegate</wls:resource-name>

        <!-- jersey -->
        <wls:resource-name>META-INF/services/org.glassfish.jersey.*</wls:resource-name>
        <wls:resource-name>org.glassfish.jersey.*</wls:resource-name>
        <wls:resource-name>jersey.repackaged.*</wls:resource-name>

        <!-- hk2 -->
        <wls:resource-name>META-INF/services/org.glassfish.hk2.*</wls:resource-name>
    </wls:prefer-application-resources>
</wls:container-descriptor>

Tested with Weblogic 12.2.1

I had the same problem when I upgraded my Jersey to 2.22.

The Weblogic 12.1.3 uses the 1.18 version of Jersey. To upgrade to another one, you can deploy the Jersey 2.x as a library on Weblogic and shared with your applications or config Weblogic to use Jersey from your application by weblogic.xml.

In my case I choose the second option:

weblogic.xml:

<prefer-application-packages>
    <package-name>javax.ws.rs.*</package-name>
    <package-name>com.sun.jersey.*</package-name>
    <package-name>org.glassfish.*</package-name>
    <package-name>org.jvnet.hk2.*</package-name>
    <package-name>jersey.repackaged.org.objectweb.asm.*</package-name>
</prefer-application-packages>

I have created a simple maven project to produce the war file with the 2.19 jersey shared library for weblogic.
You can clone from here weblogic-jax-rs
After cloning run mvn package to produce the war and then deploy it to the server

As of weblogic 12.2.1 - there is jersey 2.21.1 bundled with it so no additional installations are required.

weblogic 12.2.1.1 comes with jersey 2.22.1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!