我正在为WildFly创建一个Web应用程序,它将通过JPA(Hibernate)连接到MySQL数据库。目前,我只是想让WildFly启动并以独立模式加载MySQL驱动程序。我使用此页面作为指南:http://wildfly.org/news/2014/02/06/GlassFish-to-WildFly-migration/
我在Windows系统上本地运行WildFly和MySQL:
尝试使用推荐的控制台命令没有成功,因此我手动编辑到WildFly配置文件,看起来像上面链接的页面上的示例中的那些。首先,我创建了模块目录,并在其中放置了MySQL连接器JAR和module.xml文件:
Directory of C:\wildfly-9.0.0.Final\modules\system\layers\base\com\mysql\main
07/06/2015 09:54 AM <DIR> .
07/06/2015 09:54 AM <DIR> ..
07/06/2015 10:12 AM 334 module.xml
07/01/2015 02:38 PM 968,668 mysql-connector-java-5.1.35.jar
上面的连接器jar是从我当地的Maven存储库复制的,Maven通过以下依赖关系获得了该存储库:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
如下手动编辑module.xml文件,类似于我在wildfly.org上找到的示例:
<?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的数据源部分:
<datasource jndi-name="java:/MySQLDS" pool-name="MyDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>secret</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">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
</drivers>
在独立模式下启动WildFly时,通过运行%WILDFLY_HOME%\ bin \ standalone.bat,以下是%WILDFLY_HOME%\ standalone \ logs \ server.log中列出的第一个错误:
2015-07-06 10:25:47,321 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "mysql")
]) - failure description: "WFLYJCA0041: Failed to load module for driver [com.mysql]"
我在Stack Overflow和其他问题/答案网站上发布的类似问题通常指向疏忽,例如配置文件中的拼写错误或错误命名的文件。但是,我一遍又一遍地看到这个错误,并且看不到任何这样的错误,即使从Java SE 7和WildFly 8.2升级并从头开始重新创建配置文件,也会发生同样的错误。非常感谢任何帮助。
答案 0 :(得分:4)
在我的情况下,这是一个错误的用户问题:在../ com / mysql / main
下的目录和文件的组我将它改为wildlfy,一切都按预期工作。
答案 1 :(得分:2)
module.xml中有一个拼写错误。 module.xml中列出的连接器JAR的名称与modules \ system \ layers \ base \ com \ mysql \ main中的实际JAR文件不匹配。
答案 2 :(得分:2)
就我而言,这是双引号的问题。当我复制了module.xml的WordPress示例时,我得到了(注意引号):
<resource-root path=”postgresql-9.4.1211.jar”/>
...但Wildfly非常挑剔,需要这个(直接引用):
<resource-root path="postgresql-9.4.1211.jar"/>
答案 3 :(得分:1)
在我的情况下,我错过了需要包含module.xml和连接器jar文件的main
文件夹。
之前它是
JBOSS_HOME\modules\system\layers\base\com\mysql\module.xml
并且应该是正确的路径,(需要将module.xml和jar包含在main中)
JBOSS_HOME\modules\system\layers\base\com\mysql\main\module.xml
答案 4 :(得分:0)
我知道它已经存在,但这可能对其他人有所帮助。建议的方法是使用wildfly控制台(localhost:9990 / console)部署驱动程序。一旦部署了驱动程序jar,然后使用控制台再次创建DS,那么它将在standalone.xml中自动创建它。有时,手动执行这些操作可能会导致丢失微小的细节,这会让我们发疯。
答案 5 :(得分:-1)
对我来说,这似乎是一个编码问题。在标签之前
<module>
...
</module>
在我的module.xml文件中,有一个神秘的空白,不是utf-8或英语,导致我的失败。删除空白或将其更改为英文空白后。一切都好。另外,我找了一些解决这个问题的方法。其中大多数可以归结为module.xml文件的问题。名称拼写错误或内容编码。希望对别人有益。
答案 6 :(得分:-1)
也许是针对您的问题的两种解决方案:
您忘记了slot
文件中module
元素上的属性module.xml
,
例如:
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.postgresql" slot="main">
<resources>
<resource-root path="postgresql-9.4.1212.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
在slot="main"
元素中添加代码module
,它将生效。
如果上述方法不起作用,则将其与XML Module descriptors一起考虑。与Wildfly Failed to Load Module for Oracle Driver相同的问题:
更改module
中module.xml
元素的命名空间版本。
享受吧。