如何从 weblogic 12.2.1 禁用 Jersey

Kyl*_*yle 4 jax-rs weblogic12c jersey-2.0

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

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

但是当你升级weblogic或者Jersey的时候,你要查看类冲突,修改配置,有没有什么方便的方法可以从weblogic中禁用Jersey呢?

小智 6

您需要在项目的 web-inf 库中包含 jersey 文件(您可以从 jersey 的网站获取 jersey 和依赖项 zip 文件),还将这些行添加到您的 weblogic.xml 文件中(如使用 Jersey 2. Weblogic 12.1.1 上的 x Web 服务):

 <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>
Run Code Online (Sandbox Code Playgroud)

这样做将覆盖 weblogic 12.2.1 使用的 jersey 版本。

如果您使用的是 Json,您还需要获取这些 jars,如这篇文章POST to Jersey REST service getting error 415 Unsupported Media Type 中所示

  • 球衣媒体-json-杰克逊
  • jackson-jaxrs-json-provider
  • 杰克逊核心
  • 杰克逊数据绑定
  • 杰克逊注释
  • jackson-jaxrs-base
  • jackson-module-jaxb-注解
  • 球衣实体过滤

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

 <package-name>org.codehaus.jackson.*</package-name>
 <package-name>com.fasterxml.jackson.*</package-name>
Run Code Online (Sandbox Code Playgroud)

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