JBOSS 7 MYSQL缺少依赖项错误 [英] JBOSS 7 MYSQL missing dependencies error

查看:202
本文介绍了JBOSS 7 MYSQL缺少依赖项错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有许多这样的线程已经出现了类似的错误,但没有一个解决了我的问题,所以经过一个小时的尝试调试后,我决定寻求帮助。

There are many threads like this one already for similar errors but none which have solved my problem so after an hour of trying to debug it, I have decide to ask for help.

背景

我正在设置一个Java EE项目。我创建了一个企业应用程序并创建了一个EJB项目,JPA项目和Web项目,并将EAR添加到企业项目中。

I am setting up a Java EE project. I have create an enterprise application and have create an EJB project, JPA project and web Project and added EAR's to the enterprise project.

我还添加了 mysql-connector-java-5.1.0-bin JBOSS / standalone / deployments 文件夹。并将此jar文件添加到JPA项目中。

I have also added mysql-connector-java-5.1.0-bin to the JBOSS/standalone/deployments folder. And added to this jar file to the JPA project.

任何有关如何解决错误的建议都会非常有用。

Any advice on how to solve the error would be greatly apprecited.

主要错误是:

 missing/unavailable dependencies" =>   
    ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSD

这是我的完整错误:

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "org.hibernate:main" from local module loader @32008dad (roots: C:\Users\Bawn92\Desktop\Programs\jboss-as-7.1.1.Final\modules)]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_07]
    at java.lang.Class.forName(Class.java:186) [rt.jar:1.7.0_07]
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:101)
    ... 23 more

01:50:40,265 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "SIMSProject.ear" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\": Failed to start service"},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDBMissing[jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDB]"]}
01:50:40,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment SIMSWebProject.war in 31ms
01:50:40,296 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment SIMSEJB.jar in 31ms
01:50:40,309 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment SIMSProject.ear in 44ms
01:50:40,312 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.persistenceunit."SIMSProject.ear#SIMSJPA": org.jboss.msc.service.StartException in service jboss.persistenceunit."SIMSProject.ear#SIMSJPA": Failed to start service

01:50:40,316 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"SIMSProject.ear#SIMSJPA\": Failed to start service"},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDBMissing[jboss.persistenceunit.\"SIMSProject.ear#primary\"jboss.naming.context.java.jboss.datasources.SIMSDB]"]}}}

MY -ds.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
<datasource jndi-name="java:jboss/datasources/SIMSDB" enabled="true" 
 use-java-context="true" pool-name="SIMSDB">
 <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
<driver>mysql-connector-java-5.1.0-bin.jar</driver>
<pool></pool>
<security>
<user-name>root</user-name>
<password>nbuser</password>
</security>
</datasource>
</datasources>

我的persistence.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   <persistence-unit name="primary">

      <jta-data-source>java:jboss/datasources/SIMSDB</jta-data-source>
      <properties>

         <property name="hibernate.show_sql" value="false" />
      </properties>
   </persistence-unit>
    <persistence-unit name="SIMSJPA">
        <class>model.Class</class>
        <class>model.Subject</class>
        <class>model.Teacher</class>
        <properties>
           <!--   //i put in dialect line  -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="nbuser"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydb"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        </properties>
    </persistence-unit>
</persistence>

我的独立文件的datasourse部分是:

<datasource jndi-name="java:jboss/datasources/SIMSDB" pool-name="SIMSDB">
                <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
                <driver>mysql-connector-java-5.1.0-bin.jar</driver>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>test</user-name>
                    <password>test</password>
                </security>
                <statement>
                    <prepared-statement-cache-size>32</prepared-statement-cache-size>
                    <share-prepared-statements/>
                </statement>
                </datasource>
            <drivers>
            <driver name="com.mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
            </driver>
    </drivers>


推荐答案

您需要创建MySQL驱动程序模块。
JBoss 7将能够使用如果你这样创建它:

You need to create MySQL driver module. JBoss 7 will be able to use if you create it like this:


  1. 下载驱动程序(jar文件)

  2. 在您的服务器路径中创建目录:{$ jboss-home} / modules / com / mysql / main
    并在此处粘贴驱动程序jar文件

  3. 在同一文件夹中创建和新文件module.xml

  4. 在该module.xml中插入以下代码(如果您的jar文件名为mysql.jdbc.jar):

  1. download the driver (jar file)
  2. create directory in you server path: {$jboss-home}/modules/com/mysql/main and paste the driver jar file here
  3. in same folder create and new file module.xml
  4. Insert following code in that module.xml (if your jar file is named mysql.jdbc.jar):




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


确保mysql.jdbc.jar的依赖项正常。

Make sure the dependencies for your mysql.jdbc.jar are OK.

JBoss 7不再使用-ds.xml。
你已经在standalon.xml中为你的数据库做了设置,这是正确的方法。
只需确保您的迁移正确无误。我看到你有不同的用户名和密码...

JBoss 7 is not using -ds.xml any more. You allready doing setup for your databse in standalon.xml, this the right way. Just make sure your migration is correct. I see you have diffent user name and password...

EDIT1:

我不知道如何hibernate适用于JBoss 7.

I don't know how hibernate works with JBoss 7.

但是我看到你应该尝试更改你的persistence.xml

But I see you should try to change in your persistence.xml

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

<property name="hibernate.connection.driver_class" value="com.mysql"/>

因为您使用com.mysql作为模块名称。否则,您可以将模块名称更改为com.mysql.jdbc.Driver。

because you are using com.mysql as module name. Otherwise you can change module name to com.mysql.jdbc.Driver.

在standalone.xml中
更改

In your standalone.xml change

<driver>mysql-connector-java-5.1.0-bin.jar</driver>

<driver>com.mysql</driver>

因为你给了com.mysql作为你的驱动程序的名称:

because you gave com.mysql as name for your driver:

<driver name="com.mysql" module="com.mysql">

这篇关于JBOSS 7 MYSQL缺少依赖项错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆