Yeah!!! After I upgrade to rc4 this errors gone... Thanks
>-----Original Message----- >From: Stephen Ting [mailto:[EMAIL PROTECTED] >Sent: 25 September 2003 08:49 >To: 'Ojb Users List' >Subject: multithread problems using ODMG api > > > >I have problems in using OJB ODMG api in ejb system. When i do >multithread testing it's failed, the object doesn't get >persisted. Whereas, if i do single thread test with multiple >iteration there is no problem. Could someone give me some >guideline on how to design a multithread safe sessionbean >(container managed transaction) using odmg api? > >the stack trace is as follow >Any help are very much appreciated. >Regards, >Stephen Ting > > public LogReceiving createDoc(Site site, LogReceiving document) > throws ServiceException{ > > > try{ > //db = odmg.getDatabase(null); > if(db != null){ > db.close(); > } > Transaction tx = null; > //openODMGDatabase(site); > db = odmg.newDatabase(); > >db.open(site.getDbConnectionAlias(),Database.OPEN_READ_WRITE); > > //get the current transaction from the container > > tx = odmg.currentTransaction(); > > tx.lock(document,Transaction.WRITE); > > //db.makePersistent(document); > > > }catch(LockNotGrantedException ex){ > ex.printStackTrace(); > throw new ServiceException( > "Failed to save Log Receiving document >with label " > + document.getLabel()); > }catch(PersistenceBrokerException ex){ > ex.printStackTrace(); > throw new ServiceException( > "Failed to save Log Receiving document >with label " > + document.getLabel()); > }catch(ODMGException ex){ > > ex.printStackTrace(); > } > finally{ > if(broker != null){ > broker.close(); > } > } > > return document; > } > > >2003-09-24 18:08:23,510 INFO >[org.jboss.resource.connectionmanager.LocalTxConnectionManager$ >LocalConn >ectionEventListener] throwable from unregister connection >java.lang.IllegalStateException: Trying to return an unknown >connection1! [EMAIL PROTECTED] > at >org.jboss.resource.connectionmanager.CachedConnectionManager.un >registerC >onnection(CachedConnectionManager.java:264) > at >org.jboss.resource.connectionmanager.LocalTxConnectionManager$L >ocalConne >ctionEventListener.connectionClosed(LocalTxConnectionManager.java:371) > at >org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.cl >oseHandle >(BaseWrapperManagedConnection.java:280) > at >org.jboss.resource.adapter.jdbc.WrappedConnection.close(Wrapped >Connectio >n.java:97) > at org.apache.ojb.broker.util.WrappedConnection.close(Unknown >Source) > at >org.apache.ojb.broker.util.pooling.ByPassConnection.close(Unknown >Source) > at >org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl >.releaseC >onnection(Unknown Source) > at >org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.release >Connectio >n(Unknown Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.close(Unknown Source) > at >org.apache.ojb.broker.core.DelegatingPersistenceBroker.close(Unknown >Source) > at >org.apache.ojb.broker.core.PoolablePersistenceBroker.close(Unknown >Source) > at org.apache.ojb.odmg.DatabaseImpl.open(Unknown Source) > at >my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.create >Doc(LogRe >ceivingSessionBean.java:222) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso >rImpl.jav >a:39) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.in >voke(Stat >elessSessionContainer.java:660) > at >org.jboss.resource.connectionmanager.CachedConnectionIntercepto >r.invoke( >CachedConnectionInterceptor.java:186) > at >org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invok >e(Statele >ssSessionInstanceInterceptor.java:77) > at >org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Abstract >TxInterce >ptor.java:107) > at >org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIn >terceptor >CMT.java:291) > at >org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98) > at >org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterc >eptor.jav >a:130) > at >org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208) > at >org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSession >Container >.java:313) > at org.jboss.ejb.Container.invoke(Container.java:738) > at >org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517) > at >org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker >.java:383 >) > at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) > at sun.rmi.transport.Transport$1.run(Transport.java:148) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:144) > at >sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport. >java:460) > at >sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTra >nsport.ja >va:701) > at java.lang.Thread.run(Thread.java:534) >2003-09-24 18:08:23,510 ERROR [STDERR] Query "SELECT MAX(ID) FROM >LOG_RECEIVING" execution time: 0 result set fetch time: 0 >2003-09-24 18:08:23,541 INFO >[org.jboss.resource.connectionmanager.LocalTxConnectionManager$ >LocalConn >ectionEventListener] Unregistered handle that was not >registered! >[EMAIL PROTECTED] for >managedConnection: >[EMAIL PROTECTED] >2003-09-24 18:08:23,572 ERROR [STDERR] Query "SHOW VARIABLES LIKE >'tx_isolation'" execution time: 0 result set >fetch time: 0 >2003-09-24 18:08:23,572 ERROR [STDERR] Query "SET autocommit=0" >execution time: 0 >2003-09-24 18:08:23,572 INFO >[org.jboss.resource.connectionmanager.LocalTxConnectionManager$ >LocalConn >ectionEventListener] throwable from unregister connection >java.lang.IllegalStateException: Trying to return an unknown >connection2! [EMAIL PROTECTED] > at >org.jboss.resource.connectionmanager.CachedConnectionManager.un >registerC >onnection(CachedConnectionManager.java:274) > at >org.jboss.resource.connectionmanager.LocalTxConnectionManager$L >ocalConne >ctionEventListener.connectionClosed(LocalTxConnectionManager.java:371) > at >org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.cl >oseHandle >(BaseWrapperManagedConnection.java:280) > at >org.jboss.resource.adapter.jdbc.WrappedConnection.close(Wrapped >Connectio >n.java:97) > at org.apache.ojb.broker.util.WrappedConnection.close(Unknown >Source) > at >org.apache.ojb.broker.util.pooling.ByPassConnection.close(Unknown >Source) > at >org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl >.releaseC >onnection(Unknown Source) > at >org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.release >Connectio >n(Unknown Source) > at >org.apache.ojb.broker.accesslayer.StatementManager.closeResourc >es(Unknow >n Source) > at >org.apache.ojb.broker.accesslayer.RsIterator.releaseDbResources(Unknown >Source) > at org.apache.ojb.broker.accesslayer.RsIterator.hasNext(Unknown >Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColle >ctionByQu >ery(Unknown Source) > at >my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.create >Doc(LogRe >ceivingSessionBean.java:232) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso >rImpl.jav >a:39) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.in >voke(Stat >elessSessionContainer.java:660) > at >org.jboss.resource.connectionmanager.CachedConnectionIntercepto >r.invoke( >CachedConnectionInterceptor.java:186) > at >org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invok >e(Statele >ssSessionInstanceInterceptor.java:77) > at >org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Abstract >TxInterce >ptor.java:107) > at >org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIn >terceptor >CMT.java:291) > at >org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98) > at >org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterc >eptor.jav >a:130) > at >org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208) > at >org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSession >Container >.java:313) > at org.jboss.ejb.Container.invoke(Container.java:738) > at >org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517) > at >org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker >.java:383 >) > at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) > at sun.rmi.transport.Transport$1.run(Transport.java:148) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:144) > at >sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport. >java:460) > at >sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTra >nsport.ja >va:701) > at java.lang.Thread.run(Thread.java:534) >2003-09-24 18:08:23,572 ERROR >[org.apache.ojb.broker.accesslayer.StatementsForClassImpl] >java.sql.SQLException: Connection is closed. >[EMAIL PROTECTED] >2003-09-24 18:08:23,572 ERROR >[org.apache.ojb.broker.accesslayer.StatementsForClassImpl] >java.sql.SQLException: Connection is closed. >[EMAIL PROTECTED] >2003-09-24 18:08:23,603 ERROR [STDERR] Query "SHOW VARIABLES LIKE >'tx_isolation'" execution time: 0 result set >fetch time: 0 >2003-09-24 18:08:23,603 ERROR [STDERR] Query "SET autocommit=0" >execution time: 0 >2003-09-24 18:08:23,619 ERROR [STDERR] Query "SELECT >A0.HARD_SOFT,A0.TYPE,A0.AB,A0.DEFECT_DIAMETER,A0.MARK,A0.LENGTH >,A0.INV_V >ALUE,A0.SPECIES,A0.STATUS,A0.LABEL,A0.GRADE,A0.DIAMETER,A0.RECE >IVING_ID, >A0.COLOUR,A0.BOOK_VALUE,A0.LOGPOND_BLOCK_ID,A0.ROYALTY_ID,A0.ID > FROM LOG_RECEIVING_ITEM A0 WHERE A0.LABEL IN ( 'REC01/1222341' , >'REC01/1222342' )" execution time: 0 result set fetch time: >0 >2003-09-24 18:08:23,650 ERROR >[org.apache.ojb.broker.accesslayer.JdbcAccessImpl] >PersistenceBrokerException during the execution of the query: >Connection is closed. >[EMAIL PROTECTED] >java.sql.SQLException: Connection is closed. >[EMAIL PROTECTED] > at >org.apache.ojb.broker.util.WrappedConnection.checkOpen(Unknown Source) > at >org.apache.ojb.broker.util.WrappedConnection.prepareStatement(Unknown >Source) > at >org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepar >eStatemen >t(Unknown Source) > at >org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPre >paredStmt >(Unknown Source) > at >org.apache.ojb.broker.accesslayer.StatementManager.getPreparedS >tatement( >Unknown Source) > at >org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown >Source) > at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown >Source) > at >org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterat >or(Unknow >n Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorF >romQuery( >Unknown Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFro >mQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColle >ctionByQu >ery(Unknown Source) > at >my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.create >Doc(LogRe >ceivingSessionBean.java:232) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso >rImpl.jav >a:39) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.in >voke(Stat >elessSessionContainer.java:660) > at >org.jboss.resource.connectionmanager.CachedConnectionIntercepto >r.invoke( >CachedConnectionInterceptor.java:186) > at >org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invok >e(Statele >ssSessionInstanceInterceptor.java:77) > at >org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Abstract >TxInterce >ptor.java:107) > at >org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIn >terceptor >CMT.java:291) > at >org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98) > at >org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterc >eptor.jav >a:130) > at >org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208) > at >org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSession >Container >.java:313) > at org.jboss.ejb.Container.invoke(Container.java:738) > at >org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517) > at >org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker >.java:383 >) > at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) > at sun.rmi.transport.Transport$1.run(Transport.java:148) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:144) > at >sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport. >java:460) > at >sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTra >nsport.ja >va:701) > at java.lang.Thread.run(Thread.java:534) >rethrown as >org.apache.ojb.broker.PersistenceBrokerSQLException: >Connection is closed. >[EMAIL PROTECTED] > at >org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPre >paredStmt >(Unknown Source) > at >org.apache.ojb.broker.accesslayer.StatementManager.getPreparedS >tatement( >Unknown Source) > at >org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown >Source) > at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown >Source) > at >org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterat >or(Unknow >n Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorF >romQuery( >Unknown Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFro >mQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionB >yQuery(Un >known Source) > at >org.apache.ojb.broker.core.DelegatingPersistenceBroker.getColle >ctionByQu >ery(Unknown Source) > at >my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.create >Doc(LogRe >ceivingSessionBean.java:232) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso >rImpl.jav >a:39) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.in >voke(Stat >elessSessionContainer.java:660) > at >org.jboss.resource.connectionmanager.CachedConnectionIntercepto >r.invoke( >CachedConnectionInterceptor.java:186) > at >org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invok >e(Statele >ssSessionInstanceInterceptor.java:77) > at >org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Abstract >TxInterce >ptor.java:107) > at >org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIn >terceptor >CMT.java:291) > at >org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98) > at >org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterc >eptor.jav >a:130) > at >org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208) > at >org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSession >Container >.java:313) > at org.jboss.ejb.Container.invoke(Container.java:738) > at >org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517) > at >org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker >.java:383 >) > at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho >dAccessor >Impl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) > at sun.rmi.transport.Transport$1.run(Transport.java:148) > at java.security.AccessController.doPrivileged(Native Method) > at sun.rmi.transport.Transport.serviceCall(Transport.java:144) > at >sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport. >java:460) > at >sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTra >nsport.ja >va:701) > at java.lang.Thread.run(Thread.java:534) >Caused by: java.sql.SQLException: Connection is closed. >[EMAIL PROTECTED] > at >org.apache.ojb.broker.util.WrappedConnection.checkOpen(Unknown Source) > at >org.apache.ojb.broker.util.WrappedConnection.prepareStatement(Unknown >Source) > at >org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepar >eStatemen >t(Unknown Source) > ... 39 more > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
