【问题标题】:Wildfly mysql dependencies not availableWildfly mysql依赖项不可用
【发布时间】:2016-07-15 09:02:33
【问题描述】:

我正在使用wildflymaven,我正在尝试将java ee 应用程序部署到wildfly,并将mysql 数据库添加为datasource

我在\.wildfly\modules\system\layers\base\com\mysql\main 文件夹中添加了mysql-connector-java-5.1.6.jar 驱动程序以及一个module.xml 文件:

<?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.6.jar"/>             
  </resources>
  <dependencies>
     <module name="javax.api"/>
     <module name="javax.transaction.api"/>
  </dependencies>
</module>

我还编辑了\.wildfly\standalone\configuration\module.standalone.xml 文件并添加了datasource

<datasource jndi-name="java:/mySQLDS" pool-name="quizzer" enabled="true" use-ccm="true">
    <connection-url>jdbc:mysql://localhost:3306/quizzer</connection-url>
    <driver>mysqlDriver</driver>
    <security>
        <user-name>****</user-name>
        <password>****</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
</datasource>

以及驱动程序

<driver name="mysqlDriver" module="com.mysql">
    <datasource-class>com.mysql.Driver</datasource-class>
</driver>

我正在使用jboss forgemaven 来构建项目。当我尝试从项目中部署应用程序生成的warfile时,我收到以下错误

Cannot upload deployment: {"WFLYCTL0288: One or more services were unable to start due to one or more indirect dependencies not being available." => {"Services that were unable to start:" => ["jboss.deployment.unit.\"quickdemo.war\".POST_MODULE","jboss.persistenceunit.\"quickdemo.war#mySQLPersistence\".__FIRST_PHASE__"],"Services that may be the cause:" => ["jboss.jdbc-driver.mysqlDriver"]}}

最后,这是我的pom.xml 文件,this 是来自.forge\log\forge.log 的完整堆栈。

还有一件奇怪的事情:localhost:8080/ 上的wildfly 欢迎屏幕显示WildFly 9 正在运行,但是localhost:9990/console/App.html#standalone-deployments 的控制台(这是欢迎屏幕链接之一指向的位置)显示10.0.0.Final,这使得更有意义,因为它是我下载并安装的。我认为另一个版本可能是由于我在 forge 上安装的 Wildfly As 插件,或者他们只是忘记更新欢迎屏幕。

【问题讨论】:

  • 您应该使用 mysql github.com/lucasopires/JavaEE7-angularJs 使用 wildfly10 和 javaee7 来查看这个示例

标签: maven jakarta-ee wildfly redhat jboss-forge


【解决方案1】:

WILDFLY 10 使用 mysql 5.7

按照以下步骤:注释或删除standalone.xml中的示例

进入 jboss-cli.bat --connect 执行命令后 [standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name= com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)

应该没问题

这个修改standalone.xml,然后添加

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 jndi-name="java:/mysql" pool-name="mysqlDS" enabled="true" use-java-context="true">
<connection-url>jdbc:mysql://localhost:3306/wildfly</connection-url>
<driver>mysql</driver>
<security>
    <user-name>root</user-name>
    <password>jdfoxito10</password>
</security>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>

应该看起来像!

并放入module.xml

\java\server\wildfly-10.1.0.Final\modules\system\layers\base\com\mysql\main

mysql-connector-java-5.1.40-bin.jar(来安装mysql-installer-community-5.7.15.0.msi)module.xml

module.xml 中的内容如:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.40-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

准备好了,JAVA_HOME应该没问题

【讨论】:

    【解决方案2】:

    我认为是驱动类的问题。

    使用&lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt; 而是&lt;datasource-class&gt;com.mysql.Driver&lt;/datasource-class&gt;

    而且它总是建议在system 目录之外有自定义模块

    如果你能提供准确的堆栈跟踪将更有帮助,

    【讨论】:

    • 将其更改为&lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;,仍然出现相同的错误。至于完整的错误堆栈跟踪,我正在使用管理界面进行部署,这就是我所得到的。如果我从 forge 部署,我会得到 ***ERROR*** Deployment failed and was rolled back.。我在哪里可以阅读获得完整的堆栈?
    • 通常存放在 ${USER_HOME}/.forge 目录下。
    • 并在模块中使用 mysql-connector-java-5.1.6-bin.jar 而不是 mysql-connector-java-5.1.6.jar。我希望你的 jar 在 ...com\mysql\main 目录
    • mysql-connector-java-5.1.6.jar.wildfly\modules\system\layers\base\com\mysql\main 中。我使用mysql-connector-java-5.1.6.jar,因为它是driver from maven,我应该使用mysql-connector-java-5.1.6-bin.jar 吗?
    • 更新了module.xml 上的引用,我现在正在使用mysql-connector-java-5.1.6-bin.jar,但我仍然遇到同样的错误
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 2019-04-08
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    相关资源
    最近更新 更多