如何从weblogic 12.2.1

时间:2016-09-05 04:32:46

标签: jax-rs jersey-2.0 weblogic12c

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

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

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

1 个答案:

答案 0 :(得分:4)

您需要将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的媒体JSON-杰克逊
  • 杰克逊 - JAXRS-JSON-提供商
  • 杰克逊核
  • 杰克逊数据绑定
  • 杰克逊 - 注解
  • 杰克逊 - JAXRS基
  • 杰克逊模块-JAXB的注解
  • 球衣实体过滤

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

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

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