6

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 文件复制到libGlassfish 的目录中,但仍然出现上述错误。

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

4

3 回答 3

10

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

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

编辑:

如何使用不同的 JDBC 驱动程序?我应该在哪里复制罐子?

建议将域中所有应用程序使用的 JDBC 驱动程序放置在 domain-dir/lib 或 domain-dir/lib/classes 中。今天需要重新启动应用程序服务器实例,以便 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,这个插件将有助于自动化部署步骤。这将比手动部署更强大。当然是你的电话。

于 2012-06-10T02:41:48.780 回答
2

Besides adding the driver to your classpath, you should try adding the appserv-rt.jar file to your project's build path (the jar is located in Glassfish's lib directory). If you don't want to include all the other jars you should first create a library containing the appserv-rt jar and then add it to your project's build path.

于 2013-08-18T06:04:07.370 回答
-3

We could fix using ./asadmin start-database This starts Derby (don't know why this is required, may be a bug, and I dont use this DB in my app) :)

于 2013-12-10T06:59:42.777 回答