新的缺失/不满足的依赖项:service jboss.jdbc-driver.com_mysql(missing)dependents:[service jboss.data-source.java:jboss/MyDB]

时间:2013-07-08 19:37:05

标签: java jboss

我正在使用JBoss 7.1.1。当我尝试启动服务器时,我得到一个例外。我尝试了很多解决方案,但似乎没有任何效果。

以下行显示在日志中 -

New missing/unsatisfied dependencies: service jboss.jdbc-driver.com_mysql (missing) dependents: [service jboss.data-source.java:jboss/MyDB]

这是我的standalone.xml:

</datasource>
    <datasource jta="true" jndi-name="java:jboss/MyDB" pool-name="MyDB_Pool" enabled="true" use-java-context="true" use-ccm="true">
        <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
        <driver>com.mysql</driver>
        <security>
            <user-name>root</user-name>
            <password>root</password>
        </security>
        <timeout>
            <idle-timeout-minutes>0</idle-timeout-minutes>
            <query-timeout>600</query-timeout>
        </timeout>
        <statement>
            <prepared-statement-cache-size>100</prepared-statement-cache-size>
            <share-prepared-statements>true</share-prepared-statements>
        </statement>
    </datasource>
    <drivers>
        <driver name="h2" module="com.h2database.h2">
            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
        </driver>
        <driver name="com.mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
        </driver>
    </drivers>
</datasources>

这是我的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.24-bin.jar"/>
</resources>
<dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>       
    <module name="javax.servlet.api" optional="true"/>
    <module name="javax.validation.api"/>
</dependencies>
</module>

但我仍然有这个例外

这是我的web.xml(其中的一部分):

<resource-ref id="ResourceRef_1">
    <res-ref-name>MyDB</res-ref-name>        
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    <lookup-name>java:jboss/datasources/MyDB</lookup-name>
</resource-ref>

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

您的module.xml应该是这样的:

<module xmlns="urn:jboss:module:1.0" name="com.mysql" slot="main">
  <resources>
    <resource-root path="mysql-connector-java-5.1.24-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

并确保您在mysql-connector-java-5.1.24-bin.jar的同一文件夹中有mysql-connector-java-5.1.24-bin.jar.indexmodule.xml

答案 1 :(得分:0)

尝试升级你的mysql-connector。我试图部署5.1.5(我正在从jboss 5.1迁移到7.1.1,所以我只是将已经工作的环境移动到更新的容器)。经过两天的攻击,我升级到5.1.27,数据源就像一个冠军。

答案 2 :(得分:0)

尝试从mysql连接器lib中删除META-INF / services / java.sql.Driver。

答案 3 :(得分:0)

检查此错误的一件事是确保将数据存储在正确的文件夹中。对于JBoss EAP 7.1,它是modules\system\layers\base\com文件夹。在com文件夹内,在mysql文件夹中创建一个名为main的附加文件夹和一个mysql文件夹。 main文件夹将保存jar文件和module.xml文件。

答案 4 :(得分:0)

尝试以下步骤。我在wildfly8.0.0-final中解决了同样的问题。如果出现重复的mysql依赖项,首先删除配置,重新启动计算机后,再次尝试这些步骤。

1。创建mysql文件夹

下:$ {WILDFLY_HOME} / modules / system / layers / base

创建目录com / mysql / driver / main

将驱动程序库jar复制到主文件夹

添加module.xml

// urn:jboss:module:X.X应该与wildfly的版本相同,你可以参考其他模块。

<module xmlns="urn:jboss:module:1.1" name="com.mysql.driver">
    <resources>
         <resource-root path="mysql-connector-java-5.1.16.jar" />
    </resources>
    <dependencies>
         <module name="javax.api"/>
         <module name="javax.transaction.api"/>
    </dependencies>
</module>

2。使用CLI将模块注册为驱动程序。

$ {WILDFLY_HOME} /bin/standalone.sh(仅当wildfly未运行时)

./ jboss-cli.sh

连接

/子系统=数据源/ JDBC驱动器的MySQL =:添加(驱动程序名称= MySQL的,驱动器模块名= com.mysql.driver,驱动器类名= com.mysql.jdbc.Driver)

如果操作成功,则会显示以下消息{“outcome”=&gt; “成功”}

并在独立配置文件的文件中生成以下代码 ...

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

3。在mysql中创建数据库

以root身份登录:mysql root -p
创建数据库

创建表格

4。从控制台

创建与数据库的连接

http://localhost:9990/console

使用

等配置添加数据源
name: mysql
JNDI name: java:jboss/mysql
url: jdbc:mysql://localhost:3306/your_database

进行。