Correct, James. OpenJPA does use non-transactional datasources for accessing the database during id generation processing (if it's necessary). If a <non-jta-data-source> is defined, that will be used. Otherwise, the openjpa.Connection2* properties will be used to access via an additional connection.
Back to Chris' issue... I'm glad to hear that the use of DBCP is resolving your issue -- or, at least, is providing a suitable workaround. And, as I mentioned earlier, the use of a connection pooling mechanism is good overall. OpenJPA does use DBCP by default. Maybe we are missing a scenario with id generation. If you could describe the specific scenario (better yet with a junit test case), then maybe we can reproduce the issue and get it resolved. Thanks, Kevin On Fri, Feb 1, 2013 at 11:13 AM, James Carman <jcar...@carmanconsulting.com>wrote: > Are these the non-transactional connections that OpenJPA is using to find > the id values for the entities? I think that's how it works. > > On Feb 1, 2013, at 12:05 PM, Chris Wolf <cwolf.a...@gmail.com> wrote: > > > Kevin, > > > > I finally got past the issue of running out of connections - I simply > > configured connections pooling via DBCP and the problem went away. I > > still consider this a "work-around" because if I have a single > > process/thread persisting entities, I would expect each step of the > > way to complete in a synchronous fashion and be able to use just one > > connection to do that. > > > > Before I tried configuring connection pooling, I was trying to isolate > > the code in OpenJPA that was using up all the connections and it > > appears to be occurring in the OpenJPA sequence generator code, in or > > about: > > > > org.apache.openjpa.kernel.StateManagerImpl.assignObjectId() > > org.apache.openjpa.kernel.JDBCStoreManager.assignObjectId() > > org.apache.openjpa.kernel.AbstractJDBCSeq.next() > > org.apache.openjpa.kernel.NativeJDBCSeq.nextInternal() > > > > My entity's annotations that invoke this are: > > > > @Id > > @SequenceGenerator(name="MARKET_DATA_MARKETDATAID_GENERATOR", > > sequenceName="MARKET_DATA_ID_SEQ") > > @GeneratedValue(strategy=GenerationType.SEQUENCE, > > generator="MARKET_DATA_MARKETDATAID_GENERATOR") > > @Column(name="MARKET_DATA_ID", unique=true, nullable=false, > precision=19) > > public long getMarketDataId() { > > return this.marketDataId; > > } > > > > > > For now, I will just hope connection pooling will be sufficient to > > solve this issue, but I am wondering if your unit tests are running > > with pooling or not? If they are, you may be missing a problem. > > > > Thanks, > > > > Chris > > > > > > > > On Thu, Jan 31, 2013 at 5:59 PM, Chris Wolf <cwolf.a...@gmail.com> > wrote: > >> Kevin, > >> > >> Thanks again, I'll look into the logging thing later - you're right > >> that I'm more focused on just getting persistence to work and so I'm > >> using the debugger. For now, it's just a JSE app, so no JTA yet (but > >> that's what's targeted). > >> > >> So in addition to the programmatic transaction management via Spring > >> JpaTransactionManager, ( which > >> suppressed the out-of-connections issue but silently didn't write to > >> the DB), I tried a third approach - > >> Spring-managed transactions via Spring's TransactionTemplate and > >> callbacks, but that only got me back to where > >> I started, which is the connections running out again, plus hideous > >> code, as you can see, below. > >> > >> > >> Ok, I'll keep hammering away at it. Thanks, > >> > >> -Chris > >> > >> > >> static void saveToDB(final List<MdBaseData> data) throws Exception { > >> EntityManagerFactory emf = Persistence > >> > .createEntityManagerFactory("marketdata"); > >> > >> final JpaTemplate jpaTempl = new JpaTemplate(emf); > >> jpaTempl.afterPropertiesSet(); > >> > >> JpaTransactionManager jpaTxMgr = new > JpaTransactionManager(emf); > >> jpaTxMgr.afterPropertiesSet(); > >> > >> final TransactionTemplate txTmpl = new > TransactionTemplate(jpaTxMgr); > >> txTmpl.afterPropertiesSet(); > >> > >> TransactionStrategy txStrategy = new > TransactionStrategy() { > >> @SuppressWarnings("deprecation") > >> public Object execute(final JpaCallback<?> > callback) { > >> return txTmpl.execute(new > TransactionCallback<Object>() { > >> public Object > doInTransaction(TransactionStatus status) { > >> return > jpaTempl.execute(new JpaCallback<Object>() { > >> public Object > doInJpa(EntityManager entityManager) > >> > throws PersistenceException { > >> return > callback.doInJpa(entityManager); > >> } > >> }); > >> } > >> }); > >> } > >> }; > >> > >> txStrategy.execute(new JpaCallback<Object>() { > >> @Override > >> public Object doInJpa(EntityManager em) throws > PersistenceException { > >> for (MdBaseData bd : data) { > >> em.persist(bd); > >> } > >> return null; // writing to db, not > reading... > >> } > >> }); > >> } > >> > >> On Thu, Jan 31, 2013 at 5:19 PM, Kevin Sutter <kwsut...@gmail.com> > wrote: > >>>> Not certain what you meant by "join EM to the transaction". > >>> If an EM is created without knowledge of a containing JTA transaction, > then > >>> the EM and the JTA transaction won't automatically be linked. Thus, > if you > >>> start the transaction after the EM was created, you can use the > >>> EM.joinTransaction() method to get the two hooked up. This is, of > course, > >>> assuming that the Spring-initiated transaction is a JTA transaction. > If > >>> it's not, then you'll have to reference the Spring documentation to > figure > >>> out how the EM and transaction are linked. > >>> > >>>> BTW, I don't know if you noticed my previous post about logging, but I > >>> tried setting openjpa.Log = slf4j > >>> Yes, I did notice. But, since you seemed to have been making > progress, I > >>> figured you had figured something out... I'm not a slf4j expert, but > I do > >>> know other users have had success with integrating openjpa with slf4j. > I > >>> would guess it's an issue with the properties you are setting and how > they > >>> get mapped to OpenJPA's properties. If you are setting properties like > >>> this: > >>> > >>> log4j.category.openjpa.jdbc.JDBC=TRACE > >>> > >>> .. OpenJPA wouldn't know what to do with this. I would try setting the > >>> properties for OpenJPA's logging in the same format for the > persistence.xml: > >>> > >>> <property name="openjpa.Log" value="openjpa.jdbc.JDBC=TRACE"/> > >>> > >>> At least that's what I would expect. Somehow the configuration would > still > >>> have to map to properties that OpenJPA knows about. Otherwise, our > tracing > >>> code wouldn't know when or what to trace. I know there's some mapping > code > >>> like this for Log4J and WebSphere and maybe others. But, the > combination > >>> of slf4j and log4j might be throwing things off... Just an idea. > >>> > >>> Kevin > >>> > >>> > >>> On Thu, Jan 31, 2013 at 3:43 PM, Chris Wolf <cwolf.a...@gmail.com> > wrote: > >>> > >>>> On Thu, Jan 31, 2013 at 4:30 PM, Kevin Sutter <kwsut...@gmail.com> > wrote: > >>>>> So, which do you want? Lots of connections, or data getting to the > >>>>> database? :-) > >>>> > >>>> Preferably the later. ;) > >>>> > >>>>> > >>>>> Try starting the spring transaction before creating the EM. Either > that, > >>>>> or join the EM to the transaction. > >>>> > >>>> I tried the former - it didn't change the outcome. Not certain what > >>>> you meant by "join EM to the transaction". > >>>> > >>>> > >>>> > >>>> BTW, I don't know if you noticed my previous post about logging, but I > >>>> tried setting openjpa.Log = slf4j > >>>> and that didn't work - no errors, just no addtional output. > >>>> > >>>> Thanks for helping so far... > >>>> > >>>>> > >>>>> Kevin > >>>>> > >>>>> On Thu, Jan 31, 2013 at 3:26 PM, Chris Wolf <cwolf.a...@gmail.com> > >>>> wrote: > >>>>> > >>>>>> Kevin, > >>>>>> > >>>>>> Someone on the us...@apache.camel.org mailing list suggested that I > >>>>>> let Springframework manage the transactions, so I changed my code to > >>>>>> look like: > >>>>>> > >>>>>> The apparent connection "leak" went away, and no exceptions are > >>>>>> thrown, and I only see one connection being opened, as expected - > >>>>>> however, nothing goes into the database. > >>>>>> > >>>>>> static void saveToDB(List<MdBaseData> data) throws Exception { > >>>>>> EntityManagerFactory emf = Persistence > >>>>>> > >>>> .createEntityManagerFactory("marketdata"); > >>>>>> JpaTransactionManager jpaTxMgr = new > >>>>>> JpaTransactionManager(emf); > >>>>>> > >>>>>> > >>>>>> EntityManager em = > >>>>>> > >>>>>> jpaTxMgr.getEntityManagerFactory().createEntityManager(); > >>>>>> TransactionStatus txStatus = > >>>>>> jpaTxMgr.getTransaction(new > >>>>>> DefaultTransactionDefinition()); > >>>>>> try { > >>>>>> //em.getTransaction().begin(); > >>>>>> for (MdBaseData bd : data) { > >>>>>> em.persist(bd); > >>>>>> } > >>>>>> //em.getTransaction().commit(); > >>>>>> jpaTxMgr.commit(txStatus); > >>>>>> } catch (Exception e) { > >>>>>> jpaTxMgr.rollback(txStatus); > >>>>>> e.printStackTrace(); > >>>>>> } finally { > >>>>>> em.close(); > >>>>>> } > >>>>>> } > >>>>>> > >>>>>> On Thu, Jan 31, 2013 at 3:49 PM, Chris Wolf <cwolf.a...@gmail.com> > >>>> wrote: > >>>>>>> Even more specifically, I drilled down into the guts of > OpenJPA-2.1, > >>>>>>> into the call to > >>>>>>> EntityManager.getTransaction().begin(); > >>>>>>> > >>>>>>> The place were all the connections are opened until exhausted is > in: > >>>>>>> > >>>>>>> org.apache.openjpa.kernel.BrokerImpl.flush(int reason) > >>>>>>> > >>>>>>> There is a loop where the connections are all being opened: > >>>>>>> > >>>>>>> Collection mobjs = null; > >>>>>>> _flags |= FLAG_PRESTORING; > >>>>>>> try { > >>>>>>> if (flush) { > >>>>>>> // call pre store on all currently transactional > objs > >>>>>>> for (Iterator itr = transactional.iterator(); > >>>>>>> itr.hasNext();) //<=== EATING UP ALL CONNECTIONS > >>>>>>> ((StateManagerImpl) > >>>> itr.next()).beforeFlush(reason, > >>>>>> _call); > >>>>>>> > >>>>>>> > >>>>>>> Let me know if there's anything else I can to do help solve this > >>>> issue. > >>>>>>> > >>>>>>> Thanks, > >>>>>>> > >>>>>>> -Chris > >>>>>>> > >>>>>>> On Thu, Jan 31, 2013 at 3:18 PM, Chris Wolf <cwolf.a...@gmail.com> > >>>>>> wrote: > >>>>>>>> Kevin, > >>>>>>>> > >>>>>>>> I isolated where all the connections are opened at once - upon > >>>> calling > >>>>>>>> entityManager.getTransaction().commit(); > >>>>>>>> > >>>>>>>> I assume this is correct from all the exampled I've seen so far... > >>>>>>>> > >>>>>>>> EntityManager entityManager = > >>>>>>>> entityManagerFactory.createEntityManager(); // here is where just > one > >>>>>>>> connection is opened, as expected. (not using connection pool > yet) > >>>>>>>> entityManager.getTransaction().begin(); > >>>>>>>> for (MdBaseData bd : data) { > >>>>>>>> em.persist(bd); > >>>>>>>> } > >>>>>>>> entityManager.getTransaction().commit(); // here is where all the > >>>>>>>> connections are opened ***** > >>>>>>>> entityManager.close(); > >>>>>>>> > >>>>>>>> Note that the entity has a M2M to child entities (about 100 per > >>>>>>>> MdBaseData) via a link table. > >>>>>>>> > >>>>>>>> Thanks for any ideas, > >>>>>>>> > >>>>>>>> -Chris > >>>>>>>> > >>>>>>>> On Thu, Jan 31, 2013 at 1:56 PM, Kevin Sutter <kwsut...@gmail.com > > > >>>>>> wrote: > >>>>>>>>> Hi Chris, > >>>>>>>>> Good to know your plans. Thanks. > >>>>>>>>> > >>>>>>>>> You can get almost all of the JDBC connection access via the JDBC > >>>>>> channel > >>>>>>>>> in our logging framework [1]. Unfortunately, I looked at the > code > >>>> and > >>>>>> the > >>>>>>>>> constructors don't seem to have a log entry... :-( But, you do > get > >>>>>> all of > >>>>>>>>> the closes, commits, rollbacks, etc -- all of the normal > operations > >>>>>> through > >>>>>>>>> a Connection object. So, I'd start with that. > >>>>>>>>> > >>>>>>>>> Updating the Ctor for additional logging would be very easy to > do. > >>>> I > >>>>>> would > >>>>>>>>> probably do it in the LoggingConnectionDecorator, like you > thought. > >>>>>> If you > >>>>>>>>> have issues with building a version of OpenJPA for your testing, > >>>> ping > >>>>>> me > >>>>>>>>> back with the version of OpenJPA that you are using and maybe I > can > >>>>>> find > >>>>>>>>> time to do a quick update. But, try the JDBC log channel first > and > >>>>>> see if > >>>>>>>>> that gives you enough information for your specific scenario. > >>>>>>>>> > >>>>>>>>> Thanks, > >>>>>>>>> Kevin > >>>>>>>>> > >>>>>>>>> [1] > >>>>>>>>> > >>>>>> > >>>> > http://people.apache.org/~mikedd/nightly.builds/apache-openjpa-2.3.0-SNAPSHOT/docs/docbook/manual.html#ref_guide_logging_channels > >>>>>>>>> > >>>>>>>>> On Thu, Jan 31, 2013 at 12:02 PM, Chris Wolf < > cwolf.a...@gmail.com> > >>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> I am fully aware that pooling is the way to go, but I want to > just > >>>>>>>>>> prove out the simple case first. Also the final deployment will > >>>> be in > >>>>>>>>>> a JEE container, so it will be doing the pooling. > >>>>>>>>>> > >>>>>>>>>> I really wish there was a logging setting to trace > acquire/release > >>>> of > >>>>>>>>>> JDBC Connections - I looked at the source for (I forget now, > >>>> something > >>>>>>>>>> like JDBCDatStore) it had logging but not of acquire/release of > >>>>>>>>>> Connections. > >>>>>>>>>> > >>>>>>>>>> What is this LoggingConnectionDecorator? would that help me log > >>>>>>>>>> connection activity? If so, how is it configured? > >>>>>>>>>> > >>>>>>>>>> Thanks, > >>>>>>>>>> > >>>>>>>>>> -Chris > >>>>>>>>>> > >>>>>>>>>> On Thu, Jan 31, 2013 at 12:19 PM, Kevin Sutter < > kwsut...@gmail.com > >>>>> > >>>>>> wrote: > >>>>>>>>>>> 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 > >>>>>>>>>>>> > >>>>>>>>>> > >>>>>> > >>>> > >