【问题标题】:Wildfly 10 failing to load MySQL XA driver on startupWildfly 10 在启动时无法加载 MySQL XA 驱动程序
【发布时间】:2016-01-11 15:51:49
【问题描述】:

我在 wildfly-10.0.0 中部署了一个 Web 应用程序。它需要一个 mysql xa 驱动程序。我有以下错误:

2015-10-13 12:25:37,979 错误 [org.jboss.as.controller.management-operation](ServerService 线程池 -- 33)WFLYCTL0013:操作(“添加”)失败 - 地址:([ (“子系统”=>“数据源”), ("jdbc-driver" => "com.mysql") ]) - 失败描述:“WFLYJCA0041:无法为驱动程序 [com.mysql] 加载模块”

模块目录如下:

 Directory of C:\Users\rball\Documents\Dev\WildFly\wildfly-10.0.0.CR1\modules\sy
stem\layers\base\com\mysql\main

10/13/2015  11:32 AM    <DIR>          .
10/13/2015  11:32 AM    <DIR>          ..
10/13/2015  12:25 PM             1,575 module.xml
03/17/2015  05:21 AM           968,670 mysql-connector-java-5.1.35-bin.jar

module.xml 文件为:

   <?xml version="1.0" encoding="UTF-8"?>    

<module xmlns="urn:jboss:module:1.1" name="com.mysql">  
  <resources>  
    <resource-root path="mysql-connector-java-5.1.35-bin.jar"/>  
  </resources>  
  <dependencies>  
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>      
  </dependencies>  
</module>  

我将驱动程序和数据源添加到standalone.xml 的数据源部分:

<xa-datasource jndi-name="java:/jdbc/MyXaDS" pool-name="MyXaDSPool" enabled="true" use-ccm="false">
                <xa-datasource-property name="URL">
                    jdbc:mysql://localhost:3306/temp?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8
                </xa-datasource-property>
                <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                <driver>com.mysql</driver>
                <xa-pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>20</max-pool-size>
                    <is-same-rm-override>false</is-same-rm-override>
                    <interleaving>false</interleaving>
                    <pad-xid>false</pad-xid>
                    <wrap-xa-resource>false</wrap-xa-resource>
                </xa-pool>
                <security>
                    <user-name>root</user-name>
                    <password>password</password>
                </security>
                <validation>
                    <validate-on-match>false</validate-on-match>
                    <background-validation>false</background-validation>
                    <background-validation-millis>1000</background-validation-millis>
                </validation>
                <statement>
                    <prepared-statement-cache-size>0</prepared-statement-cache-size>
                    <share-prepared-statements>false</share-prepared-statements>
                </statement>
            </xa-datasource>
            <drivers>
                <driver name="com.mysql" module="com.mysql">
                    <driver-class>com.mysql.jdbc.Driver</driver-class>
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                </driver>
            </drivers>

【问题讨论】:

  • 关于解决此问题的任何想法。我已经查看了我在网络上可以找到的所有内容,但没有任何分辨率

标签: java mysql sql jboss xa


【解决方案1】:

WILDFLY 10 使用 mysql 5.7

按照以下步骤:注释或删除standalone.xml中的示例

进入 jboss-cli.bat --connect 执行命令后 [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name= com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)

应该没问题

这个修改standalone.xml,然后添加

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE h2 萨 萨 --> jdbc:mysql://localhost:3306/wildfly mysql 根 jdfoxito10 com.mysql.jdbc.jdbc2.optional.MysqlXADataSource

应该看起来像!

并放入module.xml

\java\server\wildfly-10.1.0.Final\modules\system\layers\base\com\mysql\main

mysql-connector-java-5.1.40-bin.jar(来安装mysql-installer-community-5.7.15.0.msi)module.xml

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.1.40-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

准备好了,JAVA_HOME应该没问题

【讨论】:

  • 请格式化您的答案。这只是一堵文字墙。
【解决方案2】:

WildFly 10 的 jca 有一些变化,导致 CLI create xads 有一些问题。 https://issues.jboss.org/browse/WFLY-6773 https://issues.jboss.org/browse/WFLY-6789 https://issues.jboss.org/browse/WFLY-6774

但是使用以下命令创建 xa 数据源是可行的

xa-data-source add --name=MariaDBXADS --driver-name=mariadb-xa --jndi-name=java:jboss/datasources/MariaDBXADS --user-name=jdv_user --password=jdv_pass --use-java-context=true --xa-datasource-properties=[DatabaseName=>products, PortNumber=>3306, ServerName=>localhost]

【讨论】:

    【解决方案3】:

    您收到的错误意味着 Wildfly 需要一个名为 com.mysql 的模块,但它不存在或未以该名称注册。

    您缺少一个步骤,即注册数据源 jdbc 驱动程序。第一步当然是在WILDFLY_HOME\modules\system\layers\base\com\mysql\main 中添加mysql-connector-java-5.1.35-bin.jar 文件和module.xml 文件。

    要摆脱你的错误,停止wildfly,通过删除这些行来删除standalone.xml中的驱动程序声明;我们将让 /subsystem 命令创建这个条目。

    <driver name="com.mysql" module="com.mysql">
         <driver-class>com.mysql.jdbc.Driver</driver-class>
         <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
    </driver>
    

    打开命令提示符并导航到 WILDFLY_HOME\bin\ 并运行以下命令。

    1. 通过运行连接到 jboss cli:jboss-cli.bat --connect。如果您的管理控制台在其他端口上运行,例如 localhost:9991,请使用 jboss-cli.bat --connect --controller=127.0.0.1:9991

    2. 然后用下面的命令注册jdbc-driver

      /subsystem=datasources/jdbc-driver=com.mysql:add(driver-name=com.mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)

    如果成功,您应该会收到回复{"outcome" =&gt; "success"}。 从那里重新加载您的服务器,您应该可以摆脱该错误。

    我得到了This link的指点

    【讨论】:

    • 此链接也有帮助,但您可能需要订阅帐户:access.redhat.com/solutions/660933
    • 如果服务器没有启动,如何连接到jboss-cli?
    • 对于 Postgres,使用 /subsystem=datasources/jdbc-driver=com.postgresql:add(driver-name=com.postgresql,driver-module-name=com.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
    【解决方案4】:

    我不太确定可能是什么问题。该消息的信息量不是很大。

    也就是说,下面的 add-mysql.cli 脚本对我有用。

    module add --name=com.mysql --resources=~/Downloads/mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar --dependencies=javax.api,javax.transaction.api
    
    batch
    /subsystem=datasources/jdbc-driver=com.mysql:add(driver-name=com.mysql, driver-module-name=com.mysql, driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)
    /subsystem=datasources/xa-data-source=mysql:add(driver-name=com.mysql, jndi-name="java:/jdbc/MySQLXA", enabled=true)
    /subsystem=datasources/xa-data-source=mysql/xa-datasource-properties=URL:add(value="jdbc:mysql://localhost:3306/temp?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8")
    run-batch
    

    我没有编写您的数据源配置中定义的所有属性,但这确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 2016-05-11
      • 2017-01-15
      • 1970-01-01
      • 2015-07-24
      • 2016-07-13
      • 2017-04-13
      • 2011-09-04
      相关资源
      最近更新 更多