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

Azi*_*uts 7 java guice guice-servlet weblogic12c jersey-1.0

我必须 在Weblogic 12c服务器(12.2.1)上使用两者(奇怪的是......)" prefer-web-inf-classes "和" web- to -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

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

Azi*_*uts 2

毕竟

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

    问题是:

该项目与 Jersey 2 存在依赖关系(基于Jersey 2.X 的Swaggerswagger-jersey2-jaxrs ...),因此通过 Swagger 依赖项 ( ),Jersey 2 库被打包在 Ear/war 上...因此prefer-web-inf-classes没有任何效果!

删除依赖关系后一切都解决了!

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