2013-03-01 5 views
1

Я пытаюсь подключиться к базе данных MySQL через JPA на сервере JBoss.Ошибка C3P0ConnectionProvider при развертывании на JBoss

Я получаю следующее исключение при развертывании моего проекта.

13:04:41,035 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.persistenceunit."dryrun.war#dbname": org.jboss.msc.service.StartException in service jboss.persistenceunit."dryrun.war#dbname": Failed to start service 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_15] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_15] 
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_15] 

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: dbname] Unable to build EntityManagerFactory 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) 
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
... 3 more 

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jdbc.connections.spi.ConnectionProvider] 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:187) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:234) 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:91) 
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) 
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71) 
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2270) 
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2266) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1735) 
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 
... 9 more 

Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider] 
at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:190) 
at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:112) 
at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:54) 
at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:69) 
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:177) 
... 22 more 

Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider] 
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:141) 
at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:187) 
... 26 more 

Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider 
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$1.findClass(ClassLoaderServiceImpl.java:99) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) [rt.jar:1.7.0_15] 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [rt.jar:1.7.0_15] 
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138) 
... 27 more 

Мой файл persistence.xml является:

<?xml version="1.0" encoding="UTF-8"?> 

<persistence-unit name="dbname" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.format_sql" value="false" /> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/dbname" /> 
     <property name="hibernate.connection.username" value="root" /> 
     <property name="hibernate.connection.password" value="" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" /> 
     <property name="hibernate.c3p0.minPoolSize" value="0" /> 
     <property name="hibernate.c3p0.maxPoolSize" value="25" /> 
     <property name="hibernate.c3p0.maxConnectionAge" value="14400" /> 
     <property name="hibernate.c3p0.maxIdleTime" value="100" /> 
    </properties> 
</persistence-unit> 

Мой файл pom.xml является:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>projectname</groupId> 
<artifactId>projectname</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<properties> 
    <version.jboss.bom>1.0.4.Final</version.jboss.bom> 
</properties> 
<build><!-- Maven will append the version to the finalName (which is the 
     name given to the generated war, and hence the context root) --> 
    <finalName>${project.artifactId}</finalName> 
    <plugins><!-- Compiler plugin enforces Java 1.6 compatibility and activates 
      annotation processors --> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.2</version> 
      <configuration><!-- Java EE 6 doesn't require web.xml, Maven needs to 
        catch up! --> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin><!-- The JBoss AS plugin deploys your war to a local JBoss AS 
      container --><!-- To use, run: mvn package jboss-as:deploy --> 
     <plugin> 
      <groupId>org.jboss.as.plugins</groupId> 
      <artifactId>jboss-as-maven-plugin</artifactId> 
      <version>7.1.1.Final</version> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.6.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.15</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.as</groupId> 
     <artifactId>jboss-as-jpa-hibernate3</artifactId> 
     <version>7.1.3.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>jexcelapi</groupId> 
     <artifactId>jxl</artifactId> 
     <version>2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0-rc1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.enterprise</groupId> 
     <artifactId>cdi-api</artifactId> 
     <version>1.1-20130222</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.6.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.mchange</groupId> 
     <artifactId>c3p0</artifactId> 
     <version>0.9.2-pre8</version> 
    </dependency> 
</dependencies> 

Я пробовал несколько разных зависимых зависимостей c3p0 от Hibernate и других, которые я мог найти, но ничего не получается, что проект работает. Может ли кто-нибудь указать мне в правильном направлении. Спасибо.

ответ

2

Конкретная зависимость, что вы отсутствовали в

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>3.6.3.Final</version> 
</dependency> 

Класс, который вы отсутствовали раньше в спящем-ядра, но он был перенесен сюда, вероятно, около версии 3,3

http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0

http://gazelle.ihe.net/content/how-use-c3p0-jdbc-connection-pool-your-maven-project

1

Ну, я исправил эту проблему, просто связав все зависимости c3p0, которые я мог найти на Maven в проекте одновременно. Я не уверен, какая из зависимостей исправила проблему, но одна из них. Поэтому кажется, что эта проблема связана с отсутствующим банком, что я подозревал в ClassNotFoundException.

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