【问题标题】:Swapping out default Java EE implementations on GlassFish替换 GlassFish 上的默认 Java EE 实现
【发布时间】:2012-07-09 22:39:52
【问题描述】:

我一直在计划使用 Hibernate 来处理我将部署到 Oracle GlassFish Server (OGS) 的应用程序的 ORM。我还想利用 Bitronix (JTA impl) 提供的一些我非常喜欢的功能。在我担心我将无法使用 Hibernate 或 Bitronix 之前从未使用过 OGS,因为 OGS 已经(预安装)了 JPA 和 JTA(以及其他)的默认实现。

这是真的吗?如果我走 OGS 路线,我会坚持使用容器附带的 JPA/JTA 实现吗?这适用于所有符合 Java EE 的容器吗?

是否有解决方法(重新配置类路径、XML/PROPERTIES 文件等)?提前致谢!

【问题讨论】:

    标签: hibernate jakarta-ee jpa glassfish jta


    【解决方案1】:

    据我所知,大多数应用程序服务器的类加载器都可以配置为(针对部署在其上的每个应用程序)首先使用应用程序服务器的库(主要是默认行为)或应用程序的库。

    我使用 Weblogic,在其自定义部署描述符中有一个 XML 标记,使应用程序的库(部署在 WAR 文件或 EAR 文件中)比应用程序服务器的库具有更高的优先级。

    p.n.很明显,您无法在 GlassFish 控制台中配置 JTA 实现。

    p.n.您不能在您的 persistence.xml 文件中指定 JPA 提供程序吗?

    【讨论】:

    • 感谢@Amir (+1) - 出于好奇,您为什么不能在 OGS 中配置您的 JTA 实现?
    • 那么您使用的是自定义 JTA 实现而不是容器的。我不确定,但我认为在 OGS 控制台中只是配置了它的默认 JTA。
    【解决方案2】:

    这不是一个好主意。交换核心模块通常是一种风险。大多数核心技术都是紧密集成的,不能轻易切换。如果所需的供应商有其他供应商的支持和胶水代码,那么你很幸运。 在 OGS 的情况下,您必须绑定到 EclipseLink (JPA RI) 或 Hibernate(一些更新模块,包括可用的胶水代码)。随您的应用程序一起运送这些东西可能(在最坏的情况下)会导致奇怪的类加载错误。 在此处查看我的想法和 JSF 示例:http://blog.eisele.net/2012/07/upgrading-mojarra-in-glassfish.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多