Ok, I gave up on using DBCP. Since my underlying database is Oracle, I decided to try their "Universal Connection Pool"

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#04_05
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#04_02

You can find the ucp.jar in $ORACLE_HOME/ucp/lib/ucp.jar or download from:

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html


Here are the persistence.xml settings that worked in standalone (no container) mode:

<property name="openjpa.jdbc.DBDictionary" value="oracle(batchLimit=200)"/> <property name="openjpa.ConnectionDriverName" value="oracle.ucp.jdbc.PoolDataSourceImpl"/>
      <property name="openjpa.ConnectionProperties"
value="connectionFactoryClassName=oracle.jdbc.pool.OracleDataSource,
user=scott, password=tiger, URL=jdbc:oracle:thin:@localhost:1521:orcl, maxPoolSize=25"/>

I have not yet tried in managed mode yet.


Regards,

Chris

P.S.  I'd still like to know how to get DBCP to work in a standalone app...

On 9/16/2013 11:45 AM, Chris wrote:
When I run my app in a container (JBoss6), the DBCP seems to automagically - just work. However, I also need to enable connection pooling for unit testing, i.e. not container-managed. In this case, and when there are a lot of records, all the connections are used up.

I tried both documented ways to explicitly configure DBCP:

http://openjpa.apache.org/faq.html#pooling
http://openjpa.apache.org/builds/2.2.2/apache-openjpa/docs/manual.html#ref_guide_dbsetup_thirdparty

Neither of these works, though. I verified that in standalone mode the DBCP code *is* being called, i.e. it calls org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(), but unlike when deployed in JBoss, the connections seem to "leak", i.e. they're never closed / returned to the pool.

Any ideas?


Thanks,


Chris

Reply via email to