Weblogic 12c:Jersey 的 Prefer-web-inf-类 和 prefer-application-packages

Weblogic 12c : Prefer-web-inf-classes and prefer-application-packages for Jersey

我必须在 [=53= 上使用 weblogic.xmlprefer-web-inf-classesprefer-application-packages 属性]Weblogic 12c 服务器 (12.2.1)

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

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

如果你有多个 WAR,你必须将 guice-jersey / guice 的库放在 war/lib 层,否则你会得到一个 Multibindings Error.

还必须注明prefer-web-inf-classestrue

这样就可以正常工作了!

我曾尝试使用 prefer-application-packages 和软件包(com.sun.jersey.guice.spi.container.servletcom.google.inject.servlet 等...)以相同的方式工作,但没有办法。

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

2。为什么使用 :prefer-application-packages

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

它在 Jersey 1.X 上完美运行,如果它是 indicated this way.。我已经分别探测了两个 war,并且工作正常......但是,记住我的朋友我有两个 war..所以......

总结

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

  1. 关于Guice Filter的问题,需要把prefer-web-inf-classes放到true才能在war使用guice-servlet.jar / jersey-guice.jar -lib 级别.
  2. 要使用 Jersey 1.x,需要使用 ..... prefer-application-package

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

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

    1. 您可以将两个文件合并为一个文件,根据需要选择标签调用。

    2. 您只需编写标签即可合并或导入/包含您的 xml 文件。示例显示。 提示:做google如何根据条件合并和调用xml文件。

毕竟

  1. 仅使用 prefer-web-inf-classestrue
  2. 如果你使用这个,你不需要使用 prefer-application-packages ....但确保你在 war 有正确的库/耳朵水平。

    问题是:

该项目与 Jersey 2 有依赖关系(基于 Swagger 对 Jersey 2.X ...)因此通过 Swagger 依赖关系(swagger-jersey2-jaxrs),Jersey 2 库被打包在ear/war... 所以 prefer-web-inf-classes 没有效果!

去掉依赖后全部解决!

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