Unable to Connect to C3P0 Connection Pool with JPA under 4.0
jantzen Nov 6, 2006 2:30 AMHi 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