【问题标题】:how to disable Jersey from weblogic 12.2.1如何从 weblogic 12.2.1 禁用泽西岛
【发布时间】:2017-01-12 10:24:51
【问题描述】:
Weblogic 12.2.1 内部有 Jersey 2.21.1 作为 JAX-RS 2.0 的实现,但我们希望使用 Jersey 2.5.1 或最新版本的 Jersey。
解决冲突的一般方法是在配置文件中定义类以从应用程序加载类。
但是当你升级 weblogic 或 Jersey 时,你必须查看类冲突并更改配置,有没有一种方便的方法可以从 weblogic 中禁用 Jersey?
【问题讨论】:
标签:
jax-rs
jersey-2.0
weblogic12c
【解决方案1】:
您需要在项目的 web-inf 库中包含 jersey 文件(您可以从 jersey 的网站获取 jersey 和依赖项 zip 文件),还将这些行添加到您的 weblogic.xml 文件中(如本文中所示 @ 987654321@):
<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,您还需要获取这些 jar,如本文POST to Jersey REST service getting error 415 Unsupported Media Type 中所述:
- jersey-media-json-jackson
- jackson-jaxrs-json-provider
- 杰克逊核心
- 杰克逊数据绑定
- 杰克逊注解
- jackson-jaxrs-base
- jackson-module-jaxb-annotations
- 球衣实体过滤
并将这些行添加到 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 替换了提供程序,这使得我的上述更改变得不必要。