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驱动程序?
答案 0 :(得分:9)
您需要为Glassfish提供MySQL JDBC jar文件。
http://ushainformatique.com/blog/2010/03/19/jdbcwithglassfish/
编辑:
建议放置所有使用的JDBC驱动程序 域中的应用程序,在domain-dir / lib或 域-DIR / 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,这个插件有助于自动化部署步骤。这比手动部署更强大。当然是你的电话。
答案 1 :(得分:2)
除了将驱动程序添加到类路径之外,您还应该尝试将appserv-rt.jar文件添加到项目的构建路径中(jar位于Glassfish的lib目录中)。如果您不想包含所有其他jar,首先应创建一个包含appserv-rt jar的库,然后将其添加到项目的构建路径中。
答案 2 :(得分:-2)
我们可以修复使用 ./asadmin start-database 这启动了Derby(不知道为什么这是必需的,可能是一个bug,我不在我的应用程序中使用这个DB) :)