【问题标题】:Upgrading GlassFish 3.1.2.2 to use JPA 2.1升级 GlassFish 3.1.2.2 以使用 JPA 2.1
【发布时间】:2013-08-29 03:27:47
【问题描述】:

我正在使用 GlassFish 3.1.2.2(由于操作系统限制,我无法升级到 4)。

我有兴趣将 JPA 2.0 升级到 JPA 2.1 GlassFish 3.1.2.2。我怎样才能做到这一点?

【问题讨论】:

  • 你在这方面有什么成功吗?我还在进行休眠 4.3.5 升级,我们仍在使用 glassfish 3.2.2。我想替换让我工作的 javax.persistence.jar,但我们有多个集群,升级这个 jar 后,我的作业调度程序应用程序部署失败,出现“EJB 定时器服务不可用”的奇怪问题。您为此升级了哪些罐子?
  • 我无法升级 GF 3 以使用 JPA 2.1,JPA 2.1 需要 JDK 7,因此您必须使用 GF 4。关于您的问题可能与 JPA 无关,而是与 EJB 版本有关。例如,如果您使用 EJB light,则不支持计时器服务

标签: jpa glassfish jpa-2.0 glassfish-3


【解决方案1】:

这很可能根本不可能。 JPA 2.1 是 EE 7 的一部分,因此未与 EE 6 GF 3.1.2.2 完全集成。

【讨论】:

    【解决方案2】:

    您是否尝试仅替换 Glassfish 中的 EclipseLink 和 JPA jar 文件?

    它可能会起作用,但是如果您使用托管持久性单元,它们不会公开任何 JPA 2.1 API,您需要解开 EntiyManager 才能访问这些。

    【讨论】:

    • 是的,我尝试替换 \glassfish\modules 下的 eclipseLink 和 JPA jar,当我使用托管持久性时,它并没有像你写的那样工作。而且我不知道如何打开 EntityManager 来访问它。
    【解决方案3】:

    我正在使用 Hibernate 4.3.8(需要 JPA 2.1)和 Glassfish 3.1.2.2。

    注意:我没有使用 glassfish 提供的任何服务。我使用的所有库都在 WEB-INF/lib 中。

    1 - 使用 JPA 2.1 版本覆盖 glassfish/modules/javax.persistence.jar 中的所有 JPA 类(包 javax.persistence)。您应该不替换整个 JAR,只覆盖类。这个 JAR 有一个 OSGI 清单和其他必须保留在那里的类。

    2 - 从 glassfish/modules/weld-osgi-bundle.jar 中删除所有 javassist 类(包 javasssist)。如果您使用的是 Hibernate,这可以解决可能的不兼容问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-18
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      相关资源
      最近更新 更多