【问题标题】:JPA/Eclipselink No persistence provider EntityManager on target server onlyJPA/Eclipselink 仅在目标服务器上没有持久性提供程序 EntityManager
【发布时间】:2015-01-20 20:31:58
【问题描述】:

我有一个在 Liferay 6.2 CE 中运行的 Vaadin 7.3.8 portlet,它使用 JPA 2.1 和用 Maven 开发的 EclipseLink 2.5.2。 portlet 在我的本地 Mac OS X 机器上按预期运行,没有 JPA 错误,带有 Liferay 6.2 / Glassfish 3.2 捆绑包和 MySQL 5.6 和 MySQL JDBC 5.1.34 连接器和 JDK 1.7_71。我没有在 Glassfish 中使用数据源。我让 EclipseLink 处理连接池,因此不需要在 Glassfish 上设置数据源。

目标环境是 CentOS 6.4,部署了相同的堆栈,接受 JDK 1.7_72。当我将 portlet 部署到目标环境时,我感到很害怕:

javax.persistence.PersistenceException:没有名为 xxxxxxx 的 EntityManager 的持久性提供程序

我已经检查了 CLASSPATH 以及我所知道的要检查的所有内容,这些都是基于此论坛中有关 JPA 的所有信息丰富的帖子。没有什么能解决我让这个 portlet 在目标环境中运行的问题。

有人遇到过此类问题吗?莫名其妙!

【问题讨论】:

    标签: java mysql glassfish eclipselink jpa-2.1


    【解决方案1】:

    运行 Liferay 的应用服务器 Glassfish 仍然需要访问 EclipseLink JAR 才能使用 API。

    确保将这三个文件放在 Glassfish 域或应用程序类路径中的 /lib/ext/ 文件夹中:

    • persistence.jar
    • eclipselink.jar
    • mysql-connector.jar

    【讨论】:

      【解决方案2】:

      找到解决方案。显然,Glassfish OSGi 包中的 Eclipselink 版本需要与您在 WAR 文件中部署的版本相同。我不得不使用这种方法将 Glassfish 3.2.2 升级到 Eclipselink 2.5.2:http://dimaki.blogspot.com/2014/02/update-glassfish-3122-eclipselink.html

      一位好朋友给我发了这条提醒。

      【讨论】:

        猜你喜欢
        • 2014-12-15
        • 2011-03-14
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        相关资源
        最近更新 更多