我正在为WildFly创建一个Web应用程序,它将通过JPA(Hibernate)连接到MySQL数据库 . 目前,我只是想让WildFly启动并以独立模式加载MySQL驱动程序 . 我使用此页面作为指南:http://wildfly.org/news/2014/02/06/GlassFish-to-WildFly-migration/
我在Windows系统上本地运行WildFly和MySQL:
-
Windows 7 Enterprise SP1
-
Oracle Java SE 1.8.0_45
-
WildFly 9.0.0.Final
-
MySQL Server 5.6
尝试使用推荐的控制台命令没有成功,因此我手动编辑到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的datasources部分:
<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升级并从头开始重新创建配置文件,也会发生同样的错误 . 任何帮助将不胜感激 .
7 回答
在我的情况下,这是一个错误的用户:组的目录和文件在../com/mysql/main下
我将它改为wildlfy,一切都按预期工作 .
module.xml中有一个拼写错误 . module.xml中列出的连接器JAR的名称与modules \ system \ layers \ base \ com \ mysql \ main中的实际JAR文件不匹配 .
就我而言,这是双引号的问题 . 当我复制了module.xml的WordPress示例时,我得到了(请注意引号):
...但Wildfly很挑剔,需要这个(直引号):
在我的情况下,我错过了
main
文件夹,需要包含module.xml和连接器jar文件 .早些时候是
并且应该是正确的路径,(module.xml和jar需要包含在main中)
我知道它已经存在,但这可能对其他人有所帮助 . 建议的方法是使用wildfly控制台(localhost:9990 / console)部署驱动程序 . 一旦部署了驱动程序jar,然后使用控制台再次创建DS,那么它将在standalone.xml中自动创建它 . 有时,手动执行这些操作可能会导致丢失微小的细节,这会让我们发疯 .
对我来说,这似乎是一个编码问题 . 在标记之前
在我的module.xml文件中,有一个神秘的空白,不是utf-8或英语,导致我的失败 . 删除空白或将其更改为英文空白后 . 一切都好 . 另外,我找了一些解决这个问题的方法 . 其中大多数可以归结为module.xml文件的问题 . 名称拼写错误或内容编码 . 希望它对别人有益 .
对您的问题可能有两个解决方案
module.xml
文件中module
元素的属性slot
,例如:在
module
元素中添加代码slot="main"
,它将生效 .Change the namespace version of module element in module.xml.
好好享受 .