Weblogic 12c:为泽西岛

时间:2016-03-29 19:04:30

标签: java guice weblogic12c jersey-1.0 guice-servlet

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

这是基于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以相同的方式工作( 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库等< / em>)

如果它是indicated this way.,它在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
  3. 问题:如何将两者结合起来使用其中之一?

2 个答案:

答案 0 :(得分:1)

毕竟

  1. 使用prefer-web-inf-classes为true。
  2. 如果您使用此功能,则不需要使用prefer-application-packages .... 但请确保您在战争/耳朵级别拥有正确的库。

    问题是:

  3. 该项目依赖泽西2(基于Swagger对泽西岛2.X ......)所以通过Swagger依赖(swagger-jersey2-jaxrs),泽西2库被打包在耳/战上。 ..所以更喜欢网络inf-classes没有效果! 删除所有已解决的依赖项。!

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

答案 1 :(得分:0)

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

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

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