2015-08-01 5 views
1

У меня есть установка JBoss, которая работала с postgresql ... Я перехожу к mySQL.JBoss Hibernate: Не удалось загрузить требуемый класс com.mysql.jdbc.Driver

Я загрузил mysql-connector-java-5.1.36-bin.jar и поместил его в JBOSS_HOME/module/com/mysql/main, создал module.xml и изменил мой standalone.xml.

Но whem я пытаюсь запустить сервер я получил folloing StackTrace:

ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 48) MSC000001: Failed to start service jboss.persistenceunit."myapp.war#myapp": org.jboss.msc.service.StartException in service jboss.persistenceunit."myapp.war#myapp": javax.persistence.PersistenceException: [PersistenceUnit: myapp] Unable to build EntityManagerFactory 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_20] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_20] 
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20] 
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1] 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: myapp] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99) 
    ... 4 more 
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver could not be loaded 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:111) 
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89) 
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156) 
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1825) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1783) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) 
    ... 9 more 
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.jdbc.Driver] 
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:151) 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106) 
    ... 21 more 
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver 
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:318) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [rt.jar:1.8.0_20] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [rt.jar:1.8.0_20] 
    at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_20] 
    at java.lang.Class.forName(Class.java:340) [rt.jar:1.8.0_20] 
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:148) 
    ... 22 more 

Может кто-то помочь?

Мой persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" 
    version="2.1"> 
    <persistence-unit name="myapp"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

     <!-- Annotated entity classes --> 
     <class>br.com.programadoremjava.ginga.test.myapp.entity.MyClassA</class> 
     <class>br.com.programadoremjava.ginga.test.myapp.entity.MyClassB</class> 

     <properties> 
      <!-- DADOS CONEXAO --> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
      <property name="hibernate.connection.username" value="application" /> 
      <property name="hibernate.connection.password" value="application" /> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/myapp" /> 

      <!-- CONFIGURACAO --> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 
     </properties> 

    </persistence-unit> 

</persistence> 

Моя конфигурация standalone.xml DataSource:

<subsystem xmlns="urn:jboss:domain:datasources:1.2"> 
    <datasources> 
     <datasource jta="true" jndi-name="java:/myapp-ds" pool-name="test" enabled="true" use-java-context="true" use-ccm="true"> 
      <connection-url>jdbc:mysql://localhost:3306/myapp</connection-url> 
      <driver>com.mysql</driver> 
      <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
      <pool> 
       <min-pool-size>5</min-pool-size> 
       <max-pool-size>30</max-pool-size> 
       <prefill>true</prefill> 
       <use-strict-min>false</use-strict-min> 
       <flush-strategy>FailingConnectionOnly</flush-strategy> 
      </pool> 
      <security> 
       <user-name>application</user-name> 
       <password>application</password> 
      </security> 
      <statement> 
       <prepared-statement-cache-size>32</prepared-statement-cache-size> 
      </statement> 
     </datasource> 
     <drivers> 
      <driver name="com.mysql" module="com.mysql"> 
       <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> 
       <driver-class>com.mysql.jdbc.Driver</driver-class> 
      </driver> 
     </drivers> 
    </datasources> 
</subsystem> 

Мой JBOSS_HOME/модуль/ком/MySQL/главная/module.xml

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

ответ

1

Вы должны обращаться к источнику данных в persistence.xml <jta-data-source>java:/jdbc/myapp-ds</jta-data-source> и удалять e все hibernate.connection. * свойства. Соединение управляется сервером приложений в этом сценарии, который вам не нужен, чтобы переопределить его в спящем режиме.

 Смежные вопросы

  • Нет связанных вопросов^_^