Wildfly 10无法在启动时加载MySQL XA驱动程序

RBa*_*444 5 java mysql sql jboss xa

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

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

modules目录如下:

 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
Run Code Online (Sandbox Code Playgroud)

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>  
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

mwa*_*ngi 7

您获得的错误意味着wildfly期望一个被调用的模块com.mysql但它不存在或者没有在该名称下注册.

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

要摆脱错误,请停止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>
Run Code Online (Sandbox Code Playgroud)

打开命令提示符并导航到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" => "success"}如果成功,你应该得到答复.从那里,重新加载您的服务器,你应该摆脱该错误.

我从这个链接得到了指针


Jam*_*ins 3

我不太确定问题是什么。该消息的信息不是很丰富。

也就是说,以下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
Run Code Online (Sandbox Code Playgroud)

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