JBoss Wildfly 9,JNDI 异常

Posted

技术标签:

【中文标题】JBoss Wildfly 9,JNDI 异常【英文标题】:JBoss Wildfly 9, JNDI exception 【发布时间】:2015-10-09 07:14:23 【问题描述】:

我是 JBoss Wildfly 的新手。我使用了 JBoss 7.1.1,它在具有相同更改的相同数据库上运行良好。我更改了standalone.xml 文件以连接到wildfly JBoss 中的服务器数据库。但是每当我尝试运行standalone.bat 文件时,都会出现以下错误:

ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "com.mysql")
]) - failure description: "WFLYJCA0041: Failed to load module for driver [com.mysql]"

已经将mysql-connector-java-5.1.36-bin.jar放在modules->com->mysql->main下

module.xml 文件为:

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

standalone.xml中的数据源如下:

<datasource jta="true" jndi-name="java:/MySqlDS" pool-name="MySqlDS_Pool" enabled="true" use-java-context="true" use-ccm="true">
                <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
                <driver-class>com.mysql.jdbc.Driver</driver-class>
                <driver>com.mysql</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>root</user-name>
                    <password>root</password>
                </security>
                <statement>
                    <prepared-statement-cache-size>32</prepared-statement-cache-size>
                    <share-prepared-statements>true</share-prepared-statements>
                </statement>
            </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>

请帮忙。提前致谢。

【问题讨论】:

奇怪,它看起来对我来说是正确的。也许是名字冲突?您能否尝试在数据源中使用&lt;driver&gt;mysql&lt;/driver&gt; 并将驱动程序定义更改为&lt;driver name="mysql" module="com.mysql"&gt; 【参考方案1】:

你没有说你使用的是什么版本的 WildFly。 看起来它根本没有找到该模块。

在 WildFly 8+ 中你需要把它放在目录中 /modules/system/layers/base/com/mysql/main/module.xml

这是你的吗?

【讨论】:

【参考方案2】:

我也遇到过类似的问题,最新的mysql jdbc驱动有问题已经报here

要解决此问题,您应该在standalone.xml 中指定驱动程序类:

<datasource
...
<driver-class>com.mysql.jdbc.Driver</driver-class>
...
</datasource>

【讨论】:

已经在standalone.xml文件中使用了这个,你可以在我的问题中看到。

以上是关于JBoss Wildfly 9,JNDI 异常的主要内容,如果未能解决你的问题,请参考以下文章

在wildfly中获得球衣异常9

在 Wildfly 中显示 ENC (java:comp/env/) 下的所有 JNDI 名称

从 JBoss 7 迁移到 WildFly 9 时使用 CMT 的 EJB

如何忽略/升级 JBoss Wildfly 9 中的模块?

如何在 JBoss Wildfly 9 中关闭 Hibernate 调试日志记录?

在 JBoss / Wildfly 9 上使用 JAX-RS 项目设置 Swagger.io 问题