如何从weblogic 12.2.1禁用Jersey [英] how to disable Jersey from weblogic 12.2.1
问题描述
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屋!