2014-02-06 2 views
0

많은 시간이 걸리지 만 여전히 해결 방법을 찾지 못했습니다. 내 봄 mvc 프로젝트에서 JPA + 최대 절전 모드 공급자 + MySQL을 사용하고 있습니다. Tomcat에 배포 할 때 문제없이 실행됩니다. 그런 다음 JBoss 7.1.1로 옮깁니다. 그것은 나를 던졌습니다 적합한 드라이버가 예외를 찾지 못했습니다.JPA + mysql JBoss 7.1.1에 배포 할 때 적합한 드라이버를 찾지 못했습니다.

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test 

그래서 이것을 JBoss로 좁 힙니다.

이 내 persistence.xml을

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> 
    <persistence-unit name="personDB"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.springapp.modlels.OfficeEntity</class> 
     <properties> 
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test"/> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
      <property name="hibernate.connection.username" value="root"/> 
      <property name="hibernate.connection.password" value="9ijn)OKM"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

이며,이 내 호출 코드 그것은 getTransaction()가 호출되는 경우 적절한 드라이버를 찾을 수없는 보스처럼 보이는

EntityManagerFactory emf = Persistence.createEntityManagerFactory("personDB"); 
     EntityManager mgr = emf.createEntityManager(); 
     mgr.getTransaction().begin(); 
     OfficeEntity officeEntity = new OfficeEntity(); 
     officeEntity.setOfficeName("test"); 
     mgr.persist(officeEntity); 
     mgr.getTransaction().commit(); 

입니다. 그리고 내 드라이버는

<dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.2.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.21</version> 
     </dependency> 

가 업데이트 : 데이비드 레베이 보스로 JDBC 드라이버를 설치하라고 제안했다. 이 내가 \ 모듈에 무슨 짓을 \ COM \ MySQL의 주요 \ 여기 MySQL의 커넥터 - 자바-5.1.21.jar를 복사 나는 또한 수정

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

을 Module.xml 작성 \ 독립 \ 구성 \ standalone.xml

<datasources> 
       <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
        <driver>h2</driver> 
        <security> 
         <user-name>sa</user-name> 
         <password>sa</password> 
        </security> 
       </datasource> 
       <datasource jta="false" jndi-name="java:/mysqldb" pool-name="my_mysl" enabled="true" use-ccm="false"> 
        <connection-url>jdbc:mysql://localhost:3306/test</connection-url> 
        <driver-class>com.mysql.jdbc.Driver</driver-class> 
        <driver>mysql</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>root</user-name> 
         <password>9ijn)OKM</password> 
        </security> 
        <validation> 
         <validate-on-match>false</validate-on-match> 
         <background-validation>false</background-validation> 
        </validation> 
        <statement> 
         <prepared-statement-cache-size>32</prepared-statement-cache-size> 
         <share-prepared-statements>false</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="mysql" module="com.mysql"/> 
       </drivers> 
      </datasources> 

그리고 나는 또한 JBoss의 콘솔에서 데이터 소스를 테스트하고 성공적으로 연결합니다. 하지만 죄송합니다.이 정보를 추가하면 여전히 동일한 예외가 표시됩니다.

도와주세요, 감사합니다.

+0

을 따를 수 있습니다 standalone.xml에 있습니다. – jpkrohling

+0

persistence.xml에 모든 연결 정보가 있으면이 데이터 소스가 필요합니까? – user454232

+0

네, JBoss를 사용하기 때문에 datasourse가 필요합니다. persistence.xml이 아닌 프로젝트를 배포 할 때 datasourse와의 연결이 필요합니다. –

답변

0

당신의 최대 절전 모드 구성은 jboss에서는 괜찮지 만 jboss로 최대 절전 모드를 설정하지 못한 것 같습니다.

1) 그래서

jboss-as-7.1.1.Final\modules\org\hibernate\main\module.xml 

2의 module.xml에 종속성을 <module name="com.mysql"/>를 추가하십시오) 당신의 standalone.xml

<datasource jta="false" jndi-name="java:jboss/datasources/mysqldb" pool-name="my_mysl" enabled="true" use-ccm="false"> 
        <connection-url>jdbc:mysql://localhost:3306/test</connection-url> 
        <driver-class>com.mysql.jdbc.Driver</driver-class> 
        <driver>mysql</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>root</user-name> 
         <password>9ijn)OKM</password> 
        </security> 
        <validation> 
         <validate-on-match>false</validate-on-match> 
         <background-validation>false</background-validation> 
        </validation> 
        <statement> 
         <prepared-statement-cache-size>32</prepared-statement-cache-size> 
         <share-prepared-statements>false</share-prepared-statements> 
        </statement> 
       </datasource> 

3)에서 다음과 같은 속성을 제거 올바른 데이터 소스를 만듭니다 persistence.xml

<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test"/> 
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
      <property name="hibernate.connection.username" value="root"/> 
      <property name="hibernate.connection.password" value="9ijn)OKM"/> 

r 구성이 맞지만 위의 변경 사항으로 코드를 수정하십시오. 해결됩니다 오류 ... 참고로

, 당신은 또한 당신이 지정한 데이터 소스를 사용하도록의 persistence.xml을 가리 키도록해야합니다 Configure hibernate in jboss 7.1.1

감사합니다이 링크 ...

관련 문제