[英]Weblogic 12c : Prefer-web-inf-classes and prefer-application-packages for Jersey
我必须使用两个(奇怪的是..) prefer-web-inf-classes
和prefer-application-packages
的weblogic.xml的特性在WebLogic 12c的服务器上(12.2.1)
它是基于 Jersey 1.9 的 REST 应用程序。 ( Jersey 1.x JAX-RS RI) 和 Guice。
1. 为什么使用 :prefer-web-inf-classes
如果您有多个 WAR,则必须将 guice-jersey / guice 的库置于 war/lib 级别,否则您会得到Multibindings Error 。
还必须指出比true
prefer-web-inf-classes
。
这样它就可以正常工作了!
我尝试使用带有包( com.sun.jersey.guice.spi.container.servlet
、 com.google.inject.servlet
等...)的prefer-application-package
s以相同的方式工作,但没有办法。
注意:无法在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 上使用这两个属性时出现部署错误..),但它是必需的:
prefer-web-inf-classes
为true
才能在war-lib 级别使用guice-servlet.jar
/ jersey-guice.jar
。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 库被打包在 ear/war 上...所以prefer-web-inf-classes
没有效果!
删除依赖后,一切都解决了!
在同一级别(类路径或耳库或战争库)不应存在同一库的不同版本。
你好,世界! 你好,有两种方法可以解决这个问题。
您可以将两个文件合并为一个文件,并根据选择标签作为要求调用它。
您可以只编写标签来合并或导入/包含您的 xml 文件。 示例显示。 提示:谷歌如何根据条件合并和调用xml文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.