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 4 文档很难通过 Google 找到,带有“glassfish 4”的搜索词仅返回 3.x 的结果,我没有管理
- Oracle 文档数据库 http://docs.oracle.com不提供 GlassFish 4.x 的文档 - 即使对于 Oracle,该文档也很低
- 3.x 文档中的链接 - 为什么不尝试一下,因为我有无限的时间 - 包括像 http://blogs.sun.com/sivakumart/entry/classloaders_in_glassfish_an_attempt 这样的死链接上http://docs.oracle.com/cd/E19226-01/820-7695/gatej/index.html
- WildFly 有一个相当神秘的反馈,从其形式和理解它的可能性来看,它仅针对核心开发人员(例如,请参见https://stackoverflow.com/questions/43090661/how-to-figure-out-what-missing-service-dependencies-in-wildfly-10-mean);据我所知,它是唯一获得 Java EE 7 认证的其他 FLOSS Java EE 应用服务器
- 由于 https://java.net/jira/browse/GLASSFISH-21437,我无法使用 GlassFish 4.1.1 .
最佳答案
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.4在 latest build, 171.1
关于java - 如何使用 EAR 中提供的依赖项取代 Glassfish 内置库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095166/