Ok, right, so even if I got the log4j or slf4j LogFactory to work, the
finest grain category would still map to one of their "channels",
rather then per-class.  I wish they hadn't chosen to implement a
log-adapter-adapter...


On Fri, Feb 1, 2013 at 11:02 AM, James Carman
<jcar...@carmanconsulting.com> wrote:
> The problem you're facing is that they use a limited set of "channels" for 
> their logging:
>
> http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/ref_guide_logging.html#ref_guide_logging_channels
>
> So, you're kind of stuck with those knobs to turn.  It is rather verbose, 
> I'll agree.  Unfortunately, for a lot of the channels, you have to jack them 
> all the way up to TRACE to get them to give you anything.
>
> On Feb 1, 2013, at 10:51 AM, Chris Wolf <cwolf.a...@gmail.com> wrote:
>
>> 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
>>>>>>>>>>>>>
>>>>>>>
>>>>>
>>>>
>

Reply via email to