Weblogic 12c:Jersey的首选web-inf-classes和prefer-application-packages

我必须在Weblogic 12c服务器(12.2.1)上同时使用两个(奇怪的是)“ prefer-web-inf-classes ”和“ prefer-application-packages属性weblogic.xml”

它是基于Jersey 1.9的REST应用程序。 *(Jersey 1.x JAX-RS RI)和Guice。

1.为什么要使用:prefer-web-inf-classes

如果你有多个WAR,你必须在war / lib的级别放置guice-jersey / guice的库, 否则你会得到Multibindings Error 。

必须指出prefer-web-inf-classes为true 这种方式正常! 我试图以相同的方式使用prefer-application-packages和package( com.sun.jersey.guice.spi.container.servlet /com.google.inject.servlet等等 ),但没办法。

注意:无法在EAR级别排除此库。

2.为什么要使用:prefer-application-packages

要在Weblogic 12c(12.2.1)上使用Jersey 1.x JAX-RS RI,所以我必须指出以下包( Weblogic使用Jersey 2的其他方式,以及不同版本的Jackson库等

如果以这种方式表示,它在Jersey 1.X上完美运行。 。 我已分别探讨了两场战争,并且工作得很好……但是,请记住我的朋友我有两场战争……所以….

概要

我不能同时使用这两个属性(在weblogic.xml上使用这两个属性部署错误..),但它需要:

  1. 对于Guice Filter的问题,需要将prefer-web-inf-classes设置为true,以便在war-lib级别使用guice-servlet.jar / jersey-guice.jar。
  2. 要使用Jersey 1.x,需要使用….. prefer-application-package

问题 :如何将两者结合使用其中之一?

毕竟

  1. 使用prefer-web-inf-classes为true。
  2. 如果你使用它,你不需要使用prefer-application-packages …. 但是确保你在war / ear级别拥有正确的库。

    问题是:

该项目依赖于Jersey 2(基于Swagger for Jersey 2.X …)所以通过Swagger依赖(swagger-jersey2-jaxrs),Jersey 2库被打包在耳/战……所以更喜欢web -inf-classes没有效果! 删除依赖后全部解决了。!

在同一级别(classpath或ear lib或war lib)不应存在同一库的不同版本

  • 你好,世界! 嗨,有两种方法可以解决这个问题。

    1. 您可以将两个文件合并到一个文件中,并根据选择标记作为要求进行调用。

    2. 您可以编写标签来合并或导入/包含您的xml文件。 示例显示。 提示:谷歌如何合并并根据条件调用xml文件。