jax-rs – 如何从weblogic 12.2.1中禁用Jersey

Weblogic 12.2.1内部有Jersey 2.21.1作为JAX-RS 2.0的实现,但我们想使用Jersey 2.5.1或Jersey的最新版本.

解决冲突的一般方法是在配置文件中定义类以从应用程序加载类.

但是当你升级weblogic或者Jersey时,你必须调查类冲突并对配置进行更改,是否有一种从weblogic中禁用Jersey的便捷方法?

最佳答案
您需要将jersey文件包含在项目的web-inf lib中(您可以从jersey的网站获取jersey和dependencies zip文件),还要将这些行添加到您的weblogic.xml文件中(如本文中的Using Jersey 2.x web service on Weblogic 12.1.1所示):

 <container-descriptor>

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

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

        <!-- hk2 -->
        <package-name>org.glassfish.hk2.*</package-name>
        <package-name>org.jvnet.hk2.*</package-name>
        <package-name>org.jvnet.tiger_types.*</package-name>

    </prefer-application-packages>

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

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

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

这样做会覆盖weblogic 12.2.1使用的球衣版本.

如果你正在使用Json,你还需要获得这些邮箱,如POST to Jersey REST service getting error 415 Unsupported Media Type所示:

> jersey-media-json-jackson
> jackson-jaxrs-json-provider
>杰克逊核心
> jackson-databind
>杰克逊 – 注释
> jackson-jaxrs-base
> jackson-module-jaxb-annotations
>泽西岛实体过滤

并将这些行添加到< prefer-application-packages> weblogic.xml中的部分:

 <package-name>org.codehaus.jackson.*</package-name>
 <package-name>com.fasterxml.jackson.*</package-name>

UDPATE-另外值得一提的是weblogic 12的默认JSON绑定器是MOXy而不是Jersey,这导致了一些问题,我最终用Jersey替换了提供程序,这使我的上述更改变得不必要.

转载注明原文:jax-rs – 如何从weblogic 12.2.1中禁用Jersey - 代码日志