java - 如何使用 EAR 中提供的依赖项取代 Glassfish 内置库?

标签 java maven jakarta-ee glassfish glassfish-4.1

GlassFish 4.1 在glassfish/modules 中提供了 EclipseLink 2.5.x。我想在我的应用程序中使用 2.6.4,并在使用 maven-ear-plugin:2.10.1 打包它时包含它

<configuration>
    <finalName>linuxtracker2</finalName>
    <version>7</version>
    <defaultLibBundleDir>lib</defaultLibBundleDir>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
        </manifest>
    </archive>
</configuration>

以及 EJB 和 WAR 模块作为依赖项(否则使用默认值)。该应用程序部署并工作正常,但我怀疑 EclipseLink 2.5 有问题,无论如何我都想覆盖它,因为我不想(双重)配置服务器来提供依赖项。

到目前为止我发现GlassFish has a classloader hierarchy并且加载请求被委托(delegate)给可以满足它的最顶层父级,但是文档当然无法解释如何使用它。有Circumventing Class Loader Isolation根据我的理解,我想说这与我想要实现的目标相反(隔离类加载器以使用我打包的依赖项)。

我的应用程序设置是标准的:实体类和 EJB 接口(interface)、EJB 实现、Web 前端和 EAR maven 模块。

相关问题:

最佳答案

GlassFish 不再受 Oracle 支持,因此现在只是一个开源项目。该文档可以在 https://glassfish.java.net/documentation.html 找到。 - 您需要下载“管理指南”PDF,尽管其他的也非常有用。

您在这里尝试执行的操作在 GlassFish 中是不可能的,而是添加到 Payara Server 中的一项功能,该功能源自 GlassFish(免责声明:我为他们工作)。

对于 EAR 文件,Payara Server 添加了添加 <classloading-delegate>false</classloading-delegate> 的选项在你的META-INF/glassfish-application.xml文件。当您将自己的版本打包在 EAR 中时,这应该会阻止您的应用程序使用 Payara Server 中的库。

但是,对于您的特定用例,您不需要使用它,因为 Payara Server already comes with EclipseLink 2.6.4latest build, 171.1

关于java - 如何使用 EAR 中提供的依赖项取代 Glassfish 内置库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095166/

相关文章:

java - 添加 'Authorization' header 会导致 Spring Security 保护允许的端点

java - SAML2.0 SSO 与 WSO2 身份服务器?

java - Jsp中${param.name}和${param[name]}有什么区别

java - 从 3.0 版本开始,Quartz 调度程序不再对 Spring 有用吗?

java - 替换所有起始行和空行处的所有空格

java - IllegalAnnotationExceptions 元素没有带有 @XmlElementDecl 的 ObjectFactory

Javafx、Maven、Hibernate,无法在第 0 行和第 0 列处执行解码

java - 我可以限制分布式应用发出的请求吗?

java - Netbeans,无法保存我对项目文件所做的编辑

maven - 在Jenkins中使用docker-maven-plugin运行Maven集成测试