0

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.

Background

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.

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.

The main error is:

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

Here is my full error:

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 is:

<?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>

My persistence.xml file is:

<?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>

The datasourse section of my Standalone file is:

<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>
Jens Piegsa
  • 7,399
  • 5
  • 58
  • 106
Bawn
  • 509
  • 3
  • 13
  • 36

1 Answers1

2

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

  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>

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

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:

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

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

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

to

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

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

In your standalone.xml change

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

to

<driver>com.mysql</driver>

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

<driver name="com.mysql" module="com.mysql">
Andreas L.
  • 2,805
  • 23
  • 23
  • Thanks for the help, I had these files just not in the right section, I have now placed them in the directory you specified, I am still getting the error, How do I make sure the dependencies for mysql.jdbc.jar are ok ? – Bawn Feb 05 '14 at 15:00
  • What is your server log showing? A postgres driver would something like: INFO [org.jboss.as.connector.subsystems.datasources] JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 8.4) I think it should be similar for MySQL driver. – Andreas L. Feb 05 '14 at 21:36
  • You can make sure dependencies for mysql.jdbc.jar are ok by searching for it on the internet. There might also a hint in the server log if some are missing. Try with that which I suggest first. – Andreas L. Feb 06 '14 at 18:16
  • My thanks for all the help, following your instructions has solved all my probelms. Thanks again for the help! – Bawn Feb 08 '14 at 11:20