我必须同时使用(奇怪的是......)“ 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上使用这两个属性时部署错误..),但它需要:
问题:如何将两者结合起来使用其中之一?
答案 0 :(得分:1)
毕竟
如果您使用此功能,则不需要使用prefer-application-packages .... 但请确保您在战争/耳朵级别拥有正确的库。
问题是:
该项目依赖泽西2(基于Swagger对泽西岛2.X ......)所以通过Swagger依赖(swagger-jersey2-jaxrs),泽西2库被打包在耳/战上。 ..所以更喜欢网络inf-classes没有效果! 删除所有已解决的依赖项。!
在同一级别(classpath或ear lib或war lib)不应存在同一个库的不同版本
答案 1 :(得分:0)
你好,世界! 嗨,有两种方法可以解决这个问题。
您可以将两个文件合并到一个文件中,并根据选择标记作为要求进行调用。
您可以编写标签来合并或导入/包含您的xml文件。示例显示。 提示:谷歌如何根据条件合并并调用xml文件。