Hi Chris, Normally, OpenJPA will only request a connection "on demand" [1]. As each database access is requested, a connection is obtained, but then it's released when we're done with it. Unless there is some processing or configuration that is telling OpenJPA to hang onto the connection... If nothing jumps out at you, I would suggest tracing (maybe both OpenJPA and database) to see why all of the connections are getting requested and nothing is getting closed.
As an aside, I would highly recommend the use of some type of connection pooling. Overall, you will get much better performance if connections can be re-used instead of constantly dropping and re-creating connections. Whether you use DBCP or Oracle pooling or some application server's connection pooling mechanism, it doesn't really matter. But, I would suggest using some connection pooling. Good luck, Kevin [1] http://people.apache.org/~mikedd/nightly.builds/apache-openjpa-2.3.0-SNAPSHOT/docs/docbook/manual.html#ref_guide_dbsetup_retain On Thu, Jan 31, 2013 at 10:51 AM, Chris Wolf <cwolf.a...@gmail.com> wrote: > If I process a small number of records, everything works, however when > I try to process a "real-world" number of records, I get an > "ORA-12519". At first, I thought it was an Oracle issue and after > searching around and getting hits on "solutions" involving increasing > Oracle sessions and processes (there are at least 125 configured), I > was still getting "ORA-12519". I then tailed the TNS listener log and > saw that everytime my OpenJPA process ran, it would consume all the > JDBC connections as if it was using connection pooling with some high > min-connections setting. > > In fact, as the stack trace shows, it's only using > "SimpleDriveDataSource", which I thought didn't pool connections and I > don't have the DBCP jar on my classpath, so why is OpenJPA opening all > these JDBC connections? > > > Thanks, > > > Chris > > > 183 marketdata INFO [main] openjpa.Runtime - Starting OpenJPA 2.2.1 > 214 marketdata INFO [main] openjpa.jdbc.JDBC - Using dictionary > class "org.apache.openjpa.jdbc.sql.OracleDictionary". > Exception in thread "main" <openjpa-2.2.1-r422266:1396819 fatal store > error> org.apache.openjpa.persistence.RollbackException: Listener > refused the connection with the following error: > ORA-12519, TNS:no appropriate service handler found > > at > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:594) > at ms.algo.adapt.test.BeanIODemo.saveToDB(BeanIODemo.java:153) > at ms.algo.adapt.test.BeanIODemo.beanIOTest(BeanIODemo.java:127) > at ms.algo.adapt.test.BeanIODemo.main(BeanIODemo.java:50) > Caused by: <openjpa-2.2.1-r422266:1396819 fatal general error> > org.apache.openjpa.persistence.PersistenceException: Listener refused > the connection with the following error: > ORA-12519, TNS:no appropriate service handler found > > at > org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4958) > at > org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4918) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:110) > at > org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:62) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:971) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getConnection(JDBCStoreManager.java:240) > at > org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.getConnection(AbstractJDBCSeq.java:163) > at > org.apache.openjpa.jdbc.kernel.NativeJDBCSeq.allocateInternal(NativeJDBCSeq.java:217) > at > org.apache.openjpa.jdbc.kernel.NativeJDBCSeq.nextInternal(NativeJDBCSeq.java:201) > at > org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60) > at > org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160) > at > org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:778) > at > org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:493) > at > org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:469) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:762) > at > org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135) > at > org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:600) > at > org.apache.openjpa.kernel.SingleFieldManager.preFlushPC(SingleFieldManager.java:803) > at > org.apache.openjpa.kernel.SingleFieldManager.preFlushPCs(SingleFieldManager.java:762) > at > org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:664) > at > org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:589) > at > org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:505) > at > org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:3028) > at > org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:44) > at > org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1042) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2114) > at > org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2074) > at > org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1992) > at > org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81) > at > org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1516) > at > org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:933) > at > org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:570) > ... 3 more > Caused by: java.sql.SQLException: Listener refused the connection with > the following error: > ORA-12519, TNS:no appropriate service handler found > > at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:517) > at > oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:557) > at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:233) > at > oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29) > at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556) > at > org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getSimpleConnection(SimpleDriverDataSource.java:84) > at > org.apache.openjpa.jdbc.schema.AutoDriverDataSource.getConnection(AutoDriverDataSource.java:39) > at > org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:76) > at > org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:118) > at > org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:93) > at > org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:118) > at > org.apache.openjpa.jdbc.schema.DataSourceFactory$DefaultsDataSource.getConnection(DataSourceFactory.java:304) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:982) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:967) > ... 31 more > Caused by: oracle.net.ns.NetException: Listener refused the connection > with the following error: > ORA-12519, TNS:no appropriate service handler found > > at oracle.net.ns.NSProtocol.connect(NSProtocol.java:457) > at > oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1625) > at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:365) > ... 44 more >