【问题标题】:Not able to create mysql datasource in Jboss 7.1.1无法在 Jboss 7.1.1 中创建 mysql 数据源
【发布时间】: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 步开始,因为我已经创建了一个管理用户。总结一下我所做的,

  1. 我添加了一个驱动文件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(完全限定的驱动类名)。

  2. 在E:\DevSoftwares\servers\jboss\jboss-as-7.1.1.Final\modules\com\mysql\main\内创建module.xml文件,内容如下:

  3. 在E:\DevSoftwares\servers\jboss\jboss-as-7.1.1.Final\modules\com\mysql\main\ 中添加了mysql-connector-java-5.0.8-bin.jar 文件

  4. 跑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。

标签: java mysql jdbc jboss


【解决方案1】:

请检查您是否已将 MySQL 数据源配置添加到 standalone.xml 或等效的 XML 文件中:-

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                <driver>h2</driver>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
            </datasource>
            <datasource jndi-name="java:jboss/datasources/MySqlExampleDS" pool-name="MySqlExampleDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:mysql://localhost:3306/jboss7db</connection-url>
                <driver>mysql</driver>
                <pool>
                    <max-pool-size>30</max-pool-size>
                </pool>
                <security>
                    <user-name>root</user-name>
                    <password>admin</password>
                </security>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="mysql" module="com.mysql">
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
</subsystem> 

【讨论】:

  • 如果我通过配置文件设置数据源,我不需要执行此步骤,在我的情况下,我使用管理控制台 UI 界面进行设置,我假设将创建这部分整个操作完成后在standalone.xml中?
  • 是的,管理 UI 将为您创建上述内容。然而,您需要自己创建 com.mysql 模块,例如下载驱动程序并创建 module.xml 并放入模块目录结构中。许多关于如何做到这一点的在线示例。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2017-05-18
  • 1970-01-01
相关资源
最近更新 更多