如何从weblogic 12.2.1禁用Jersey [英] how to disable Jersey from weblogic 12.2.1

查看:465
本文介绍了如何从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库中(您可以从jersey网站获取jersey和依赖项zip文件),还需要添加这些文件行到您的weblogic.xml文件(如这篇文章中所示发布到Jersey REST服务的POST错误415不支持的媒体类型:

  • jersey-media-json-jackson
  • jackson-jaxrs-json-provider
  • jackson-core
  • jackson-databind
  • jackson-批注
  • jackson-jaxrs-base
  • jackson-module-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,从而无需进行上述更改.

Weblogic 12.2.1 has Jersey 2.21.1 inside as implementation of JAX-RS 2.0,but we would like to use Jersey 2.5.1 or Jersey of the latest version.

General way to solve the conflict is to define classes in configuration file to load classes from application.

But when you upgrade weblogic or Jersey, you have to look into the class conflict and make changes to configuration, is there a convenient way to disable Jersey from weblogic?

解决方案

You need to include the jersey files in the web-inf lib of your project (you can get jersey and dependencies zip file from jersey's website), also add these lines to your weblogic.xml file (as indicated in this post 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>

Doing this will override the jersey version used by weblogic 12.2.1.

If you're using Json you will also require to get these jars as indicated in this post POST to Jersey REST service getting error 415 Unsupported Media Type:

  • jersey-media-json-jackson
  • jackson-jaxrs-json-provider
  • jackson-core
  • jackson-databind
  • jackson-annotations
  • jackson-jaxrs-base
  • jackson-module-jaxb-annotations
  • jersey-entity-filtering

and add these lines to the <prefer-application-packages> section in weblogic.xml:

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

UDPATE- Also worth mentioning that weblogic 12 default JSON binder is MOXy and not Jersey, this has caused me some issues and I eventually replaced the provider with Jersey which makes my above changes unnecessary.

这篇关于如何从weblogic 12.2.1禁用Jersey的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆