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上使用这两个属性部署错误..),但它需要:
- 对于Guice Filter的问题,需要将prefer-web-inf-classes设置为true,以便在war-lib级别使用guice-servlet.jar / jersey-guice.jar。
- 要使用Jersey 1.x,需要使用….. prefer-application-package
问题 :如何将两者结合使用其中之一?
毕竟
- 使用prefer-web-inf-classes为true。
-
如果你使用它,你不需要使用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)不应存在同一库的不同版本
-
你好,世界! 嗨,有两种方法可以解决这个问题。
-
您可以将两个文件合并到一个文件中,并根据选择标记作为要求进行调用。
-
您可以编写标签来合并或导入/包含您的xml文件。 示例显示。 提示:谷歌如何合并并根据条件调用xml文件。
-