部署到没有为com.mysql.jdbc.jdbc2.optional.MysqlXADataSource设置的Glassfish类路径

时间:2012-06-10 02:14:08

标签: eclipse deployment glassfish ear

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驱动程序?

3 个答案:

答案 0 :(得分:9)

您需要为Glassfish提供MySQL JDBC jar文件。

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

编辑:

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

  

建议放置所有使用的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) :)