我一直在尝试将mysql配置为wildfly中的数据源 . 我不确定我错过了什么,我在启动时收到错误 .
我有mysql-connector-java-5.0.8-bin.jar和文件夹中的module.xml:“/ wildfly-8.1.0.Final/modules/system/layers/base/com/mysql/main”
以下是文件
module.xml
<module xmlns="urn:jboss:module:1.1"
name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.0.8.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
standalone.xml
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<datasource jta="true" jndi-name="java:jboss/datasources/proj" pool-name="proj" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>admin123</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
我已经在eclipse中使用独立程序测试了jdbc连接,但它确实有效
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectSql {
public static void main(String []args){
String userName = "root";
String pass = "admin123";
String url = "jdbc:mysql://localhost/";
String driver ="com.mysql.jdbc.Driver";
String db = "proj";
try{
//registering the driver.
Class.forName(driver);
Connection con = DriverManager.getConnection(url+db,userName,pass);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select f_name from t_users");
while(rs.next()){
System.out.println("name :"+rs.getString(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(ClassNotFoundException cnf){
cnf.printStackTrace();
}
}
}
提到下面的链接并修改了module.xml
Wildfly 8.0.0 mysql problems with datasource
这是我启动时的错误日志
02:45:17,169 ERROR [org.jboss.as.controller.management-operation](控制器启动线程)JBAS014613:操作(“添加”)失败 - 地址:([(“subsystem”=>“datasources”), (“data-source”=>“proj”)]) - 失败描述:{“JBAS014771:缺少/不可用依赖的服务”=> [“jboss.data-source.java:jboss/datasources/proj缺失[jboss] .jdbc-driver.mysql]“,”jboss.driver-demander.java:jboss/datasources/proj缺失[jboss.jdbc-driver.mysql]“]} 02:45:17,175 ERROR [org.jboss.as . controller.management-operation](控制器启动线程)JBAS014613:操作(“添加”)失败 - 地址:([(“subsystem”=>“datasources”),(“data-source”=>“proj”)]) - 失败描述:{“JBAS014771:缺少/不可用依赖的服务”=> [“jboss.data-source.java:jboss/datasources/proj缺失[jboss.jdbc-driver.mysql]”,“jboss.driver- demander.java:jboss/datasources/proj缺失[jboss.jdbc-driver.mysql]“],”JBAS014879:一个或多个服务无法启动由于一个或多个间接依赖关系不可用 . “ => {“无法启动的服务:”=> [“jboss.data-source.reference-factory.proj”,“jboss.naming.context.java.jboss.datasources.proj”],“可能的服务成为原因:“=> [”jboss.jdbc-driver.mysql“]}}
5 回答
要解决Wildfly上的mysql数据源配置问题,我使用管理控制台添加数据源并对其进行测试 .
Steps for accessing web console
名称:mysql
JNDI:java:jboss / datasources / proj
单击下一步并输入URL(我使用下面的内容)并单击“启用”,然后单击“测试”
url:jdbc:mysql:// localhost / proj
测试应该显示成功
自动进行standalone.xml和module.xml的更改 .
如果现在重新启动服务器,它应该没有任何错误地启动,您应该能够从Web项目访问数据库
我在wildfly上配置了mysql驱动程序 .
差别似乎是存在“驱动程序级”标签 .
我希望它会有所帮助 .
(部署mysql驱动程序作为部署也是有效的,这是推荐的方式.https://docs.jboss.org/author/display/WFLY8/DataSource+configuration)
[edit]
我在wildfly / modules / com / mysql / jdbc / main /下有mysql模块 . 我刚才注意到你的模块路径与模块名称不对应 . 我还没有找到任何文档,但我认为你不应该搞乱模块/系统目录 .
module.xml
两件事:我刚刚开始工作,并且驱动程序和xml位于$ JBOSS_HOME / modules / com / mysql / jdbc / main中 - 我对此也很新,所以我不确定这是否重要 . 另一件事:我不知道它是否只是一个错字,但如果只是复制和粘贴它看起来像你的JAR名称不正确
什么时候应该
我忘记了我的.jar,最终修复了它 . 希望有所帮助!
当您下载mysql连接器zip并将zip作为部署上载时,可能会发生这种情况 . 但正确的方法是解压缩下载并指向包含的jar .
有three ways使用它可以简单地创建数据源到wildfly
使用管理控制台
手动添加到standalone.xml
创建xml文件的数据源文件 .
转到 WildFly directory/standalone/deployments 使用以下内容创建数据源xml的最简单方法