【发布时间】:2016-06-11 10:55:58
【问题描述】:
我正在使用jboss as 7.1.1 final 版本。我正在尝试通过管理控制台将mysql driver 添加到服务器。我可以这样做,但是当我去创建数据源时,我没有找到那里列出的驱动程序。我按照此链接中提到的步骤将驱动程序添加到服务器:
http://www.appeon.com/support/documents/appeon_online_help/1.5/server_configuration_guide_for_j2ee/ch03s03s03.html#d0e4128
我从通过 Web 控制台安装 JDBC 驱动程序的第 3 步开始,因为我已经创建了一个管理用户。总结一下我所做的,
我添加了一个驱动文件
E:\DevSoftwares\servers\jboss\jboss-as-7.1.1.Final\modules\com\mysql\main\META-INF\services\java.sql.Driver,其内容如下:com.mysql.jdbc.jdbc2.optional.MysqlXADataSource(完全限定的驱动类名)。-
在
E:\DevSoftwares\servers\jboss\jboss-as-7.1.1.Final\modules\com\mysql\main\内创建module.xml文件,内容如下: 在
E:\DevSoftwares\servers\jboss\jboss-as-7.1.1.Final\modules\com\mysql\main\中添加了mysql-connector-java-5.0.8-bin.jar文件跑
jar -uf mysql-connector-java-5.0.8-bin.jarMETA-INF\services\java.sql.Driver命令修改jar。 运行此命令后,我可以在 jar 文件的 META-INF 文件夹中看到第 1 步中给出的驱动程序类名称services\java.sql.Driver文件,该文件在运行命令之前不存在。
我从下面的链接中选择了 Jboss 7.x 的 mysql 驱动程序类的完全限定名称: http://www.appeon.com/support/documents/appeon_online_help/1.5/server_configuration_guide_for_j2ee/ch03s03s07.html#d0e5769
我能够找出导致问题的原因,当我尝试启用已部署的 jar 时,我在服务器控制台中收到异常说明:无法实例化驱动程序类 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource:
java/lang.ClassCastException : com.mysql.jdbc.jdbc2.optional.MysqlXADataSource。
但是,我检查了mysql-connector-java-5.0.8-bin.jar,并能够在与类完全限定名称相同的目录结构中找到上述驱动程序类。
我无法弄清楚为什么会出现此异常或在导致此问题的设置过程中我做错了什么。我使用的平台是 windows。有人可以帮我解决这个问题。
注意:module.xml的内容
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.0.8-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>`
【问题讨论】:
-
首先使用最新版本的 JDBC 驱动程序,截至目前 5.1.39,确实 5.1 是推荐的版本,您可以在这里看到dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html
-
你的数据源配置怎么样?
-
@NicolasFilotto 我尝试使用最新版本,即 5.1.39。现在我可以在尝试创建数据源时看到 jar,但是当我测试连接时,我收到错误消息,指出连接无效。但是我通过java代码尝试使用相同的连接字符串和用户名,密码并且能够连接,这表明连接信息是正确的。
-
在这种情况下,驱动程序类名称也与上述链接中给出的不同。它的 com.mysql.jdbc.Driver com.mysql.fabric.jdbc.FabricMySQLDriver 而不是 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource。当我尝试像在问题中那样修改 jar 并尝试部署和启用此版本的 jar 时,我得到了相同的 classcastexception。