Just to clarify, for me, these logging settings work: <property name="openjpa.Log" value="openjpa.jdbc.JDBC=TRACE"/>
-= or, for SQL =- <property name="openjpa.Log" value="SQL=TRACE"/> <property name="openjpa.ConnectionFactoryProperties" value="PrettyPrint=true, PrettyPrintLineLength=72"/> <property name="openjpa.ConnectionFactoryProperties" value="printParameters=true"/> But the first one (JDBC logging) is too verbose - it's either all or nothing, which is why I wanted to setup the slf4j or log4j backend to be able to have more fine-grained settings. If you've been able to figure that out, that would be great. I've already posted on the openjpa users list about that, but nothing from there yet... On Fri, Feb 1, 2013 at 10:39 AM, Chris Wolf <cwolf.a...@gmail.com> wrote: > James, > > I just replied to your message from last night - I got it working by > using your latest suggestion plus enabling DBCP connection pooling, > although I don't know why pooling should matter. > > I notice that you were able to get OpenJPA logging to work - I'd sure > be interested in seeing your persistence.xml settings for that - I > have not been able to get any logging from OpenJPA and I tried the > default, the log4j and slf4j backends - all to no avail... > > As for my final implementation, I think this latest code from you is > the cleanest (for my purposes). Again, thanks so much for the help. > > -Chris > > On Fri, Feb 1, 2013 at 6:32 AM, James Carman > <jcar...@carmanconsulting.com> wrote: >> Chris, >> >> Here's my complete class: >> >> public class JpaTest >> { >> public static void main(String[] args) >> { >> ClassPathXmlApplicationContext ctx = new >> ClassPathXmlApplicationContext("classpath:/META-INF/spring-beans.xml"); >> final EntityManagerFactory factory = >> ctx.getBean(EntityManagerFactory.class); >> final JpaTransactionManager transactionManager = new >> JpaTransactionManager(factory); >> >> TransactionTemplate template = new >> TransactionTemplate(transactionManager); >> template.execute(new TransactionCallbackWithoutResult() >> { >> @Override >> protected void doInTransactionWithoutResult(TransactionStatus >> status) >> { >> EntityManager em = >> EntityManagerFactoryUtils.getTransactionalEntityManager(factory); >> for (int i = 0; i < 10; ++i) >> { >> MyEntity entity = new MyEntity(); >> entity.setName("name"); >> em.persist(entity); >> } >> } >> }); >> >> } >> } >> >> >> Here's the output I see when I turn up OpenJPA's logging: >> >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 1546366616 INSERT INTO MyEntity (id, name) VALUES (?, ?) >> [params=?, ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 702383716 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, >> ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 245507253 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, >> ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 924315284 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, >> ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 70275790 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, >> ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 9196680 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 2097261823 INSERT INTO MyEntity (id, name) VALUES (?, ?) >> [params=?, ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 2030360950 INSERT INTO MyEntity (id, name) VALUES (?, ?) >> [params=?, ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 761335820 INSERT INTO MyEntity (id, name) VALUES (?, ?) [params=?, >> ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> executing >> prepstmnt 1063557914 INSERT INTO MyEntity (id, name) VALUES (?, ?) >> [params=?, ?] >> 02-01@06:30:54 TRACE (SQL) - <t 2063246672, conn 936619118> [0 ms] spent >> 02-01@06:30:54 TRACE (JDBC) - <t 2063246672, conn 936619118> [1 ms] >> commit >> 02-01@06:30:54 TRACE (JDBC) - <t 2063246672, conn 936619118> [0 ms] close >> >> >> It looks like it'll use the same connection object for each insert and >> commit and close it at the end (I'm using DriverManagerDataSource just to >> make sure it won't pool). >> >> >> On Jan 31, 2013, at 9:14 PM, James Carman <jcar...@carmanconsulting.com> >> wrote: >> >>> Try this: >>> >>> JpaTransactionManager transactionManager = new >>> JpaTransactionManager(factory); >>> >>> TransactionTemplate template = new >>> TransactionTemplate(transactionManager); >>> template.execute(new TransactionCallbackWithoutResult() >>> { >>> @Override >>> protected void doInTransactionWithoutResult(TransactionStatus >>> status) >>> { >>> EntityManager em = >>> EntityManagerFactoryUtils.getTransactionalEntityManager(factory); >>> MyEntity entity = new MyEntity(); >>> em.persist(entity); >>> } >>> }); >>> >>> On Jan 31, 2013, at 5:49 PM, Chris Wolf <cwolf.a...@gmail.com> wrote: >>> >>>> James, >>>> >>>> Ok, now using TransactionTemplate, but I'm back to where I was - the >>>> same apparent connection "leak", only now >>>> the code is hideous with all those nested anonymous classes and whatnot... >>>> ;) >>>> >>>> >>>> -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 4:42 PM, James Carman >>>> <jcar...@carmanconsulting.com> wrote: >>>>> Try using TransactionTemplate. >>>>> >>>>> On Jan 31, 2013, at 4:19 PM, Chris Wolf <cwolf.a...@gmail.com> wrote: >>>>> >>>>>> James, >>>>>> >>>>>> As per your suggestion, I let Spring manage the transactions and the >>>>>> apparent connection "leak" went away and I only see one connection >>>>>> being opened per session, as expected. >>>>>> >>>>>> Unfortunately, nothing got inserted into the database. >>>>>> >>>>>> Thanks, >>>>>> >>>>>> -Chris >>>>>> >>>>>> My modified code looks like: >>>>>> >>>>>> >>>>>> 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 2:45 PM, James Carman >>>>>> <ja...@carmanconsulting.com> wrote: >>>>>>> Well, it looks like you're also managing your own transactions. >>>>>>> Perhaps just use Spring for the transaction management. >>>>>>> >>>>>>> >>>>>>> On Thu, Jan 31, 2013 at 2:35 PM, Chris Wolf <cwolf.a...@gmail.com> >>>>>>> wrote: >>>>>>>> Right, I looked into that but the Spring docs say that JpaTemplate is >>>>>>>> deprecated in favor of native JPA APIs. >>>>>>>> >>>>>>>> http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/orm/jpa/JpaTemplate.html >>>>>>>> >>>>>>>> I am using OpenJPA-2.1 >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> -Chris >>>>>>>> >>>>>>>> On Thu, Jan 31, 2013 at 2:29 PM, James Carman >>>>>>>> <ja...@carmanconsulting.com> wrote: >>>>>>>>> Well, you're managing your entity manager yourself, right? You could >>>>>>>>> have a bug in there that's leaving it open? Can you use Spring or >>>>>>>>> some other technology to do this for you in a way where you can be >>>>>>>>> sure everything gets cleaned up? >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Jan 31, 2013 at 2:28 PM, Chris Wolf <cwolf.a...@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> Howdy Matthias, >>>>>>>>>> >>>>>>>>>> Yes, in an earlier post to this thread, I mentioned that 120 >>>>>>>>>> connections were being opened (the max). So, yes, the max connections >>>>>>>>>> limit is being hit. >>>>>>>>>> >>>>>>>>>> I observe this by tailing the TNS listener log >>>>>>>>>> >>>>>>>>>> c:/app/<userId>/diag/tnslsnr/<userId>/listener/trace/listener.log >>>>>>>>>> >>>>>>>>>> (Oracle-11g on Windows7) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The question is why? Unless I have a connection leak. >>>>>>>>>> >>>>>>>>>> -Chris >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Jan 31, 2013 at 2:21 PM, Matthias Lüneberg >>>>>>>>>> <matthias.lueneb...@googlemail.com> wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> Is it possible that the oracle database has reached its max >>>>>>>>>>> connections/processes limit? >>>>>>>>>>> >>>>>>>>>>> I found an article: >>>>>>>>>>> http://www.dadbm.com/2011/11/oracle-listener-refused-connection-ora-12519-troubleshooting/ >>>>>>>>>>> >>>>>>>>>>> Maybe its a database failure. Can you have a look at this? >>>>>>>>>>> >>>>>>>>>>> HTH, Matthias >>>>>>>>>>> >>>>>>>>>>> Am 31.01.2013 um 18:48 schrieb Chris Wolf <cwolf.a...@gmail.com>: >>>>>>>>>>> >>>>>>>>>>>> James, >>>>>>>>>>>> >>>>>>>>>>>> Here is what it looks like. At first, I was using the "jpa://" >>>>>>>>>>>> endpoint, but then I needed to implement a custom processor to >>>>>>>>>>>> handle >>>>>>>>>>>> additional logic. Thanks for having a look... >>>>>>>>>>>> >>>>>>>>>>>> -Chris >>>>>>>>>>>> >>>>>>>>>>>> from("file:/tmp/local/data?filter=#filter&preMove=/tmp/local/holding/${file:onlyname}.${id}&move=/tmp/local/archive&moveFailed=/tmp/local/errors&readLock=changed") >>>>>>>>>>>> .unmarshal(cpmdfileFormat) >>>>>>>>>>>> .processRef("dataStore") >>>>>>>>>>>> //.to("jpa:?persistenceUnit=marketdata") >>>>>>>>>>>> .beanRef("oneshotPoller", "resumeJpaConsumer"); // signal consumer >>>>>>>>>>>> route to begin >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Bean for "dataStore": >>>>>>>>>>>> >>>>>>>>>>>> public class CPMDPersister implements Processor { >>>>>>>>>>>> private static final transient Logger log = >>>>>>>>>>>> LoggerFactory.getLogger(CPMDPersister.class); >>>>>>>>>>>> IGenericDAO<MdBaseData> mdBaseDataDAO; >>>>>>>>>>>> IGenericDAO<MdCurveData> mdCurveDataDAO; >>>>>>>>>>>> >>>>>>>>>>>> public CPMDPersister(){} >>>>>>>>>>>> >>>>>>>>>>>> public CPMDPersister(IGenericDAO<MdBaseData> mdBaseDataDAO, >>>>>>>>>>>> IGenericDAO<MdCurveData> mdCurveDataDAO) { >>>>>>>>>>>> this.mdBaseDataDAO = mdBaseDataDAO; >>>>>>>>>>>> this.mdCurveDataDAO = mdCurveDataDAO; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> @Override >>>>>>>>>>>> public void process(Exchange exchange) throws Exception { >>>>>>>>>>>> Message inMsg = exchange.getIn(); >>>>>>>>>>>> >>>>>>>>>>>> @SuppressWarnings("unchecked") >>>>>>>>>>>> List<MdBaseData> mdBaseData = >>>>>>>>>>>> (ArrayList<MdBaseData>)inMsg.getBody(ArrayList.class); >>>>>>>>>>>> >>>>>>>>>>>> IntervalElapsedTimer avg = new IntervalElapsedTimer(); >>>>>>>>>>>> avg.start(); >>>>>>>>>>>> mdBaseDataDAO.begin(); >>>>>>>>>>>> >>>>>>>>>>>> for (MdBaseData md : mdBaseData) { >>>>>>>>>>>> setParentReferences(md); >>>>>>>>>>>> mdBaseDataDAO.save(md); >>>>>>>>>>>> avg.lap(); >>>>>>>>>>>> log.debug("JPA Persist MD: {}, {}", >>>>>>>>>>>> new Object[] {md.toString(), avg.toString()}); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> mdBaseDataDAO.commit(); >>>>>>>>>>>> >>>>>>>>>>>> log.debug("JPA Persist: {}", avg.toString()); >>>>>>>>>>>> int a = 0; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> void setParentReferences(MdBaseData md) { >>>>>>>>>>>> for (MdCurveData cd : md.getMdCurveData()) { >>>>>>>>>>>> if (cd.getMdBaseData() == null) >>>>>>>>>>>> cd.setMdBaseData(new >>>>>>>>>>>> ArrayList<MdBaseData>()); >>>>>>>>>>>> if (!cd.getMdBaseData().contains(md)) >>>>>>>>>>>> cd.getMdBaseData().add(md); >>>>>>>>>>>> } >>>>>>>>>>>> } >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> The DAOs, are a thin wrapper around EntityManager, like: >>>>>>>>>>>> >>>>>>>>>>>> @SuppressWarnings("unchecked") >>>>>>>>>>>> public List<T> findAll() { >>>>>>>>>>>> return entityManager.createQuery("from " + >>>>>>>>>>>> entityType.getName()) >>>>>>>>>>>> .getResultList(); >>>>>>>>>>>> } >>>>>>>>>>>> public void begin() { >>>>>>>>>>>> this.entityManager.getTransaction().begin(); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> public void commit() { >>>>>>>>>>>> this.entityManager.getTransaction().commit(); >>>>>>>>>>>> this.entityManager.clear(); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> public void rollback() { >>>>>>>>>>>> this.entityManager.getTransaction().rollback(); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Jan 31, 2013 at 12:34 PM, James Carman >>>>>>>>>>>> <ja...@carmanconsulting.com> wrote: >>>>>>>>>>>>> What does your route look like? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Jan 31, 2013 at 11:58 AM, Chris Wolf >>>>>>>>>>>>> <cwolf.a...@gmail.com> wrote: >>>>>>>>>>>>>> I have further determined that it's an OpenJPA issue (or user >>>>>>>>>>>>>> error, >>>>>>>>>>>>>> but how can that be?) ;) >>>>>>>>>>>>>> >>>>>>>>>>>>>> I will report back when I get to the bottom of it. Thanks a lot, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Chris >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sat, Jan 26, 2013 at 2:47 AM, Willem Jiang >>>>>>>>>>>>>> <willem.ji...@gmail.com> wrote: >>>>>>>>>>>>>>> Can you share us your camel route? It is important for us to >>>>>>>>>>>>>>> find out the key reason of your issue. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 发自我的 iPhone >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 在 2013-1-26,上午5:22,Chris Wolf <cwolf.a...@gmail.com> 写道: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Fri, Jan 25, 2013 at 3:55 PM, Chris Wolf >>>>>>>>>>>>>>>> <cwolf.a...@gmail.com> wrote: >>>>>>>>>>>>>>>>> I ask because when I use jpa: in producer mode, I get this >>>>>>>>>>>>>>>>> error: >>>>>>>>>>>>>>>>> Caused by: oracle.net.ns.NetException: Listener refused the >>>>>>>>>>>>>>>>> connection >>>>>>>>>>>>>>>>> with the following error: >>>>>>>>>>>>>>>>> ORA-12519, TNS:no appropriate service handler found >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Strangely, using jpa: in consumer mode, this does not >>>>>>>>>>>>>>>>> happen. In the >>>>>>>>>>>>>>>>> tnslsnr.log, I observe 120 connections being opened when >>>>>>>>>>>>>>>>> running the route with jpa: in producer mode. If I instead >>>>>>>>>>>>>>>>> use a >>>>>>>>>>>>>>>>> custom Processor and do my own JPA persistence code, >>>>>>>>>>>>>>>>> the issue does not occur. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks for any advice, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Chris >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I stepped through with the debugger and the problem went away. >>>>>>>>>>>>>>>> The >>>>>>>>>>>>>>>> point at which a lot of connections were opened was >>>>>>>>>>>>>>>> after I stepped over: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> return jpaTemplate.execute(new >>>>>>>>>>>>>>>> JpaCallback<Object>() { >>>>>>>>>>>>>>>> public Object doInJpa(EntityManager >>>>>>>>>>>>>>>> entityManager) >>>>>>>>>>>>>>>> throws PersistenceException { >>>>>>>>>>>>>>>> return callback.doInJpa(entityManager); >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> ..and when running in real time (not debugging) it seems to be >>>>>>>>>>>>>>>> running >>>>>>>>>>>>>>>> in an AsyncProcessor - I wonder if it's too many worker >>>>>>>>>>>>>>>> threads eating up the connections? BTW, this is mt first >>>>>>>>>>>>>>>> project >>>>>>>>>>>>>>>> using Camel, so forgive the lack of experience... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] UnmarshallingContext >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> EOF reached at line 2007 >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] SendProcessor >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>>>>>> Endpoint[jpa://?persistenceUnit=marketdata] Exchange[null] >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] JpaTransactionManager >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Creating new transaction with name [null]: >>>>>>>>>>>>>>>> PROPAGATION_REQUIRED,ISOLATION_DEFAULT >>>>>>>>>>>>>>>> 8505 marketdata INFO [Camel (camel-1) thread #1 - >>>>>>>>>>>>>>>> file:///tmp/local/data] openjpa.Runtime - Starting OpenJPA >>>>>>>>>>>>>>>> 2.2.1 >>>>>>>>>>>>>>>> 8535 marketdata INFO [Camel (camel-1) thread #1 - >>>>>>>>>>>>>>>> file:///tmp/local/data] openjpa.jdbc.JDBC - Using dictionary >>>>>>>>>>>>>>>> class >>>>>>>>>>>>>>>> "org.apache.openjpa.jdbc.sql.OracleDictionary". >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] JpaTransactionManager >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Opened new EntityManager >>>>>>>>>>>>>>>> [org.apache.openjpa.persistence.EntityManagerImpl@798b429b] >>>>>>>>>>>>>>>> for JPA >>>>>>>>>>>>>>>> transaction >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] JpaTransactionManager >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Initiating transaction commit >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] JpaTransactionManager >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Committing JPA transaction on EntityManager >>>>>>>>>>>>>>>> [org.apache.openjpa.persistence.EntityManagerImpl@798b429b] >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] JpaTransactionManager >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Closing JPA EntityManager >>>>>>>>>>>>>>>> [org.apache.openjpa.persistence.EntityManagerImpl@798b429b] >>>>>>>>>>>>>>>> after >>>>>>>>>>>>>>>> transaction >>>>>>>>>>>>>>>> [ad #1 - file:///tmp/local/data] EntityManagerFactoryUtils >>>>>>>>>>>>>>>> DEBUG >>>>>>>>>>>>>>>> Closing JPA EntityManager >>>>>>>>>>> >>>>> >>> >>