【问题标题】:Deploying to Glassfish classpath not set for com.mysql.jdbc.jdbc2.optional.MysqlXADataSource未为 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource 设置部署到 Glassfish 类路径
【发布时间】:2012-06-10 02:14:08
【问题描述】:

Glassfish 未加载 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource 包。

抛出以下错误

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence
Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: 
Error in allocating a connection. Cause: Class name is wrong or classpath is not set    
for:com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
Error Code: 0 at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy
(EntityManagerSetupImpl.java:517)...

我已将mysql-connector jar 文件复制到Glassfish 的lib 目录,但仍然出现上述错误。

如何确保 Glassfish 可以为我部署的应用程序找到我的 JDBC 驱动程序?

【问题讨论】:

  • Sara,我发布了一个答案,可能会为您指明正确的方向。但是,如果您编辑您的问题,使其包含您在 Glassfish 日志文件中看到的错误,那就太好了。
  • @Rob,完成!我仍然有这个问题。
  • 好的,莎拉,谢谢。编辑以使用更具体的信息来回答。

标签: eclipse deployment glassfish ear


【解决方案1】:

您需要让 Glassfish 可以使用 MySQL JDBC jar 文件。

http://ushainformatique.com/blog/2010/03/19/jdbcwithglassfish/

编辑:

如何使用不同的 JDBC 驱动程序?我应该在哪里复制 jar(s)?

建议放置 JDBC 驱动程序,所有的 域中的应用程序,在 domain-dir/lib 或 域目录/lib/类。重新启动应用程序服务器实例 今天需要,以便 JDBC 驱动程序对应用程序可见 部署在域中。

来自https://blogs.oracle.com/sivakumart/entry/classloaders_in_glassfish_an_attempt

因此,将 jar 文件移动到您正在部署应用程序的域下方的 lib 目录中。默认 Glassfish 域是 domain1。

重新启动 Glassfish,这应该可以工作。

有一个 Maven Glassfish 插件可能值得评估http://maven-glassfish-plugin.java.net/ 使用 Maven,这个插件将有助于自动化部署步骤。这将比手动部署更强大。当然是你的电话。

【讨论】:

  • 谢谢。我的经理正在使用 Netbeans,他从一开始就告诉我要在那里添加 jar 文件。所以我已经在那里添加了它。但似乎使用 eclipse 我也应该将它添加到其他地方。问题仍然存在。
  • 感谢 Rob,它现在正在工作。除此之外,我还遇到了另一个问题,之后一直给我同样的错误。它与连接池属性有关。我忘了在那里设置用户名和密码的属性。现在它正在工作。
【解决方案2】:

除了将驱动程序添加到类路径之外,您还应该尝试将 appserv-rt.jar 文件添加到项目的构建路径(jar 位于 Glassfish 的 lib 目录中)。如果您不想包含所有其他 jar,则应首先创建一个包含 appserv-rt jar 的库,然后将其添加到项目的构建路径中。

【讨论】:

  • 我找到了 appserv-rt.jar,但是构建路径在哪里。我使用 Netbeans 和 Payara。
【解决方案3】:

我们可以使用 ./asadmin 启动数据库 这将启动 Derby(不知道为什么需要这样做,可能是一个错误,我没有在我的应用程序中使用这个数据库) :)

【讨论】:

  • 这是在保护 MySQL 连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多