首页 文章

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

提问于
浏览
3

我有一个我在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

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的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>

4 回答

  • 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\ 并运行以下命令 .

    • 运行: jboss-cli.bat --connect 连接到jboss cli . 如果您的管理控制台在不同的端口上运行,例如localhost:9991,请使用 jboss-cli.bat --connect --controller=127.0.0.1:9991

    • 然后使用以下命令注册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"} . 从那里,重新加载您的服务器,你应该摆脱该错误 .

    我收到了来自This link的指针

  • 1

    我不确定问题是什么 . 该消息不是很有用 .

    那说以下 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
    

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

  • 5

    WildFly 10在jca中有一些变化导致CLI创建xa ds有一些问题 . 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]
    
  • 1

    WILDFLY 10使用mysql 5.7

    请按照以下步骤操作:在standalone.xml中注释或删除exampleds

    进入jboss-cli.bat - 执行命令后连接[standalone @ localhost:9990 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver -Xa-数据源类名= com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)

    应该可以

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

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

    应该是这样的!

    和module.xml放入

    \ java中\服务器\ wildfly-10.1.0.Final \模块\ SYSTEM \层\基\ COM \ MySQL的\主

    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应该没问题

相关问题