jersey - 来自 WebLogic 12c Web 应用的多个引用共享库

标签 jersey weblogic moxy weblogic12c

我正在尝试使用 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 标准功能)。库的定义与这两种方法相同,但哪些类型的模块可以是库以及引用它们的方式不同。

最佳答案

如果您使用的是 WAR 文件,那么包含共享库的适当方式是在 list 中:http://docs.oracle.com/cd/E17904_01/web.1111/e13706/libraries.htm#i1070938

请参阅标题为“从 Java EE 应用程序或模块引用可选包”的部分:

Any Java EE archive (JAR, WAR, RAR, EAR) can reference one or more registered optional packages using attributes in the archive's manifest file.

WAR 文件也有一个 list ,您可以在其中定义要引入的共享库。weblogic.xml 不会为 WAR 文件执行此操作。 weblogic.xml 中的 library-ref 用于 SPI 的非共享库。

完成您所要求的正确方法是使用 MANIFEST.MF 文件。对于此特定示例,您将执行以下操作:

Extension-List EclipseLink Jersey
EclipseLink-Extension-Name: EclipseLink
EclipseLink-Specification-Version: 2.4.1
EclipseLink-Implementation-Version: 2.4.1.v20121003-ad44345
Jersey-Extension-Name: Jersey
Jersey-Specification-Version: 1.17
Jersey-Implementation-Version: 1.17.0

如果您需要,我可以提供一个示例,说明如何使用 Maven 执行此操作。多年来我一直这样做 :)

这里是 WebLogic 中共享库的概述。我以为它有 WARS 的具体示例,但我想我把它漏掉了 :)

http://www.youtube.com/watch?v=ArLTKapjV_8

关于jersey - 来自 WebLogic 12c Web 应用的多个引用共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232513/

相关文章:

java - 使用 Jersey 获取 REST 资源作为 List<T>

java - 将 hibernate 与 Restful Web 服务集成时出现问题?

java - Jetty + Guice + Jersey 在访问资源时给出 404

ssl - 在 weblogic 服务器上启用 HTTPs 不起作用

performance - enable-call-by-reference 的效果

java - 在 Eclipse Oxygen 和 Tomcat 9 中设置 RESTful 环境

java - 如何避免从 Java Web 服务器向自身发送 HTTP 请求?

java - Spring/Jaxb2Marshaller/MOXy 不加载 package-info.java 命名空间映射

JAXB 编译问题 - [错误] 属性 "Any"已定义

xml - 如何避免编码时 JAXB、MOXY 实现中的类型删除?