8

我必须在Weblogic 12c 服务器(12.2.1)上同时使用(奇怪的是..)prefer-web-inf-classesweblogic.xmlprefer-application-packages的 属性

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

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

如果您有多个 WAR,则必须将 guice-jersey / guice 的库放在 war/lib 级别,否则会出现Multibindings Error

还必须指出prefer-web-inf-classesto true

这样它就可以正常工作了!

我试图以同样的方式使用prefer-application-packages 和包(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/guice-servlet.jarjersey-guice.jarwar -lib 级别
  2. 要使用 Jersey 1.x,需要使用.....prefer-application-package

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

4

2 回答 2

1

毕竟

  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 库被打包在 ear/war 上......所以prefer-web-inf-classes没有效果!

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

在同一级别(类路径或耳库或战争库)不应存在同一库的不同版本。

于 2016-07-26T09:46:41.437 回答
0
  • 你好世界!你好,有两种方法可以解决这个问题。

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

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

于 2016-04-07T11:37:46.737 回答