我正在尝试使用 Moxy 2.4.1(更新的 JAXB impl)和 Jersey 1.17(更新的 JAX-RS impl)。我将共享库模块(作为库)部署到服务器没有问题。
在我正在开发的应用程序(WAR)中,我尝试从 weblogic.xml 文件中引用它们,如下所示:
<library-ref>
<library-name>EclipseLink-2.4.1</library-name>
<specification-version>2.4.1</specification-version>
<implementation-version>2.4.1.v20121003-ad44345</implementation-version>
<exact-match>true</exact-match>
</library-ref>
<library-ref>
<library-name>Jersey-1.17</library-name>
<specification-version>1.17</specification-version>
<implementation-version>1.17.0</implementation-version>
<exact-match>true</exact-match>
</library-ref>
但似乎只有第一个引用的库被使用了。如果我使用类加载器分析工具 (wls-cat),我只会看到一个 FilteringClassLoader,并且过滤器模式只匹配第一个共享库的包。切换顺序给了我另一个库。
查看http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd表明 library-ref 是无界的。
除了合并共享库并且每个应用程序只使用一个库引用之外,我还能做什么?
编辑:请注意,我使用的是共享库(WebLogic 特定功能)而不是可选包(EE 标准功能)。两种方法的库定义相同,但哪些类型的模块可以是库以及引用它们的方式不同。