2 Replies Latest reply on Jul 3, 2009 7:00 AM by Jakub Danilewicz

    Unable to Connect to C3P0 Connection Pool with JPA under 4.0

    jantzen Newbie

      Hi All,

      I'm attempting to connect to a PostgreSQL database via a database pool and seeing some odd behavior:

      JBoss 4.0.5
      c3p0-0.9.1-pre6.jar
      PostgreSQL 8.1

      It looks to me that the pool is starting correctly, as I see it in the logs

      22:26:16,920 INFO [C3P0PooledDataSource] Bound C3P0 PooledDataSource to name 'java:EventDBPool'. Starting...
      22:26:16,951 INFO [PoolBackedDataSource] Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource@5d11c3f0[ ...
      22:26:16,993 INFO [JmxKernelAbstraction] installing MBean: persistence.units:ear=DataTier.ear,jar=DataTier.jar,unitName=EventDBUnit with dependencies:
      22:26:16,994 INFO [JmxKernelAbstraction] jboss.jca:name=EventDBPool,service=DataSourceBinding
      


      However below I see:

      --- MBeans waiting for other MBeans ---
      ObjectName: persistence.units:ear=DataTier.ear,jar=DataTier.jar,unitName=EventDBUnit
       State: NOTYETINSTALLED
       I Depend On:
       jboss.jca:name=EventDBPool,service=DataSourceBinding
      
      --- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
      ObjectName: jboss.jca:name=EventDBPool,service=DataSourceBinding
       State: NOTYETINSTALLED
       Depends On Me:
       persistence.units:ear=DataTier.ear,jar=DataTier.jar,unitName=EventDBUnit
      


      Here's my c3p0-service.xml:
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-service_4_0.dtd">
      <server>
       <mbean code="com.mchange.v2.c3p0.mbean.C3P0PooledDataSource" name="jboss:service=EventDBPooledDS">
       <attribute name="JndiName">java:EventDBPool</attribute>
       <attribute name="JdbcUrl">jdbc:postgresql://localhost/EventDB</attribute>
       <attribute name="DriverClass">org.postgresql.Driver</attribute>
       <attribute name="User">myuser</attribute>
       <attribute name="Password">mypass</attribute>
       <attribute name="IdleConnectionTestPeriod">90</attribute>
       <attribute name="MaxPoolSize">15</attribute>
       <attribute name="MinPoolSize">5</attribute>
       <attribute name="TestConnectionOnCheckin">true</attribute>
      
       <depends>jboss:service=Naming</depends>
       </mbean>
      </server>
      


      And my persistence.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <persistence xmlns="http://java.sun.com/xml/ns/persistence"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       version="1.0">
       <persistence-unit name="EventDBUnit" transaction-type="JTA">
       <provider>org.hibernate.ejb.HibernatePersistence</provider>
       <jta-data-source>java:EventDBPool</jta-data-source>
       <properties>
       <property name="hibernate.show_sql" value="true" />
       </properties>
       </persistence-unit>
      


      Also, if I create an EntityManagerFactory from that persistence unit directly in my code, I'm able to use it. However, if I use dependency injection via @PersistenceContext it doesn't work.

      My questions:
      1) is there an error in my persistence.xml or c3p0-service.xml preventing startup or connection to the pool?
      2) ought I to be using c3p0 still or JBoss's ManagedConnectionPool?

      Thanks in advance,
      David