我在独立模式下运行了全新安装的 Wildfly 10应用服务器。我需要部署一个需要MySQL JDBC驱动程序的项目。 我按照JDBC Driver Setup上的教程安装了驱动程序(我选择了模块安装)。重新启动WildFly后,在 console.log 中,我读到了:
INFO [org.jboss.as.connector.subsystems.datasources](ServerService 线程池 - 33)WFLYJCA0005:部署不符合JDBC的驱动程序 class com.mysql.jdbc.Driver(版本5.1) INFO [org.jboss.as.connector.deployers.jdbc](MSC服务主题1-6) WFLYJCA0018:使用driver-name = mysql
启动驱动程序服务
看起来一切都很好,但我无法获得数据库的连接。 我正在使用这段代码:
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName?user=someUser&password=somePass");
第一行抛出异常:
com.mysql.jdbc.Driver来自[Module " deployment.someProject-1.0.0.war:主 来自服务模块加载器]"
如果我注释掉第一行,我会得到没有合适的驱动程序异常。
你知道吗?谢谢你的建议答案 0 :(得分:2)
您需要在刚刚创建的MySQL模块上添加WAR的依赖项。
有两种方法,在WAR中使用MANIFEST.MF文件并使用行依赖项:com.mysql
或者使用jboss-dependencies XML文件,如:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.mysql" />
</dependencies>
</deployment>
</jboss-deployment-structure>
两者都应放在WAR文件的META-INF目录中。应该有Maven插件可以为你创建。
答案 1 :(得分:1)
我有个主意。
据我所知,WildFly模块默认情况下不会出现在应用程序中。 我想你需要让你的应用知道MySql模块。
如果你有WAR需要在WEB-INF文件夹中创建文件jboss-deployment-structure.xml,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="mysql" />
</dependencies>
</deployment>
</jboss-deployment-structure>