Hi Yu Wang, It sounds like someone is maintaining a pool of EntityManagers. The assertOpen method isn't checking Derby, it's concerned with the state of the EntityManager itself.
How did you close the cache of OpenJPA EntityManagers? I have very little experience with Spring, but the stack makes it look like it's handing out the EntityManager that is being used. -mike On Fri, Jun 5, 2009 at 2:44 AM, wang yu <[email protected]> wrote: > Hello, > My application uses Tomcat6,derby,spring and OpenJPA 1.20. > My case is stopping derby database and restarting it. And I found even > if I catch the database connection broken exception and create an new > EntityManager successfully after derby restarts, the following > exception stack will be printed : > > <2009-06-05 15:22:21,140> <ERROR> <com.***.ds.Persister.persist:203> > <Persistence-thread-1> <The context has been closed. The stack trace > at which the context was closed is available if Runtime=TRACE logging > is enabl...@agent > (key=Domain7:machine0:0,machine0;jsessionid=0F915CC5A079F150E6C1E34661661831)> > <openjpa-1.2.1-r752877:753278 fatal user error> > org.apache.openjpa.persistence.InvalidStateException: The context has > been closed. The stack trace at which the context was closed is > available if Runtime=TRACE logging is enabled. > at > org.apache.openjpa.kernel.BrokerImpl.assertOpen(BrokerImpl.java:4367) > at > org.apache.openjpa.kernel.BrokerImpl.beginOperation(BrokerImpl.java:1766) > at > org.apache.openjpa.kernel.BrokerImpl.newQuery(BrokerImpl.java:3483) > at > org.apache.openjpa.kernel.DelegatingBroker.newQuery(DelegatingBroker.java:1225) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:870) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:865) > at > org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.java:77) > at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:357) > at $Proxy15.createQuery(Unknown Source) > at > com.***.dao.JPAImpl.CallpathDaoImpl.findByName(CallpathDaoImpl.java:31) > at > com.***.dao.JPAImpl.CallpathDaoImpl.findByName(CallpathDaoImpl.java:18) > at com.***.ds.Persister.persist(Persister.java:139) > at com.***.ds.PersistRunner.run(PersistRunner.java:44) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417) > at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:65) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:168) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > > And I ensure the new EntityManager connect derby successfully by > netstat -an|grep 1527. > I closed all cache of OpenJPA but same error still happen. > > > Regards, > Yu Wang >
