首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自WebLogic 12c web应用程序的多个引用共享库

来自WebLogic 12c web应用程序的多个引用共享库
EN

Stack Overflow用户
提问于 2013-03-06 03:32:35
回答 2查看 3.5K关注 0票数 3

我正在尝试使用Moxy 2.4.1 (更新JAXB impl)和Jersey 1.17 (更新JAX-RS impl)。我已经将共享库模块(作为库)部署到服务器上,没有任何问题。

在我正在开发的应用程序(WAR)中,我尝试从weblogic.xml文件中引用它们,如下所示:

代码语言:javascript
复制
<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>

但似乎只使用了第一个被引用的库。如果我使用Classloader Analysis Tool (wls-cat),我只看到一个FilteringClassLoader,过滤器模式只与第一个共享库的包匹配。交换顺序会给我另一个库。

查看http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd会发现库引用是无界的。

除了合并共享库并且每个应用程序只使用一个库引用之外,我还能做什么?

编辑:请注意,我使用的是共享库(一个特定于WebLogic的特性),而不是可选的包(一个EE标准特性)。两种方法对库的定义是相同的,但是哪些类型的模块可以是库,以及如何引用它们是不同的。

EN

回答 2

Stack Overflow用户

发布于 2013-10-22 09:10:37

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

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

任何Java存档文件(JAR、WAR、RAR、EAR)都可以使用存档清单文件中的属性引用一个或多个注册的可选软件包。

WAR文件也有一个Manifest,您可以在其中定义想要引入的共享库。weblogic.xml不会对WAR文件执行此操作。weblogic.xml中的库引用是针对SPI的非共享库的。

执行请求的正确方法是使用MANIFEST.MF文件。对于这个特定的示例,您将执行以下操作:

代码语言:javascript
复制
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中共享库的概述。我以为它有关于战争的具体例子,但我想我遗漏了这一点:)

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

票数 0
EN

Stack Overflow用户

发布于 2021-01-27 21:18:46

要检测对共享库的Classloader的引用,必须将weblogic-application.xml添加到EAR的META-INF目录中。

你耳朵的结构如下所示:

代码语言:javascript
复制
yourEarFile.ear
    META-INF
         weblogic-application.xml
    yourWarFile.war

您的/META-INF

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-application"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.2/weblogic-application.xsd">

    <xml> 
        <parser-factory> 
            <saxparser-factory>org.apache.xerces.jaxp.SAXParserFactoryImpl</saxparser-factory>
            <document-builder-factory>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</document-builder-factory> 
        </parser-factory> 
    </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>


</weblogic-application>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15232513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档