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.unregisterC
onnection(CachedConnectionManager.java:264)
at
org.jboss.resource.connectionmanager.LocalTxConnectionManager$LocalConne
ctionEventListener.connectionClosed(LocalTxConnectionManager.java:371)
at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle
(BaseWrapperManagedConnection.java:280)
at
org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnectio
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.releaseConnectio
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.createDoc(LogRe
ceivingSessionBean.java:222)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stat
elessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(
CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statele
ssSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterce
ptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptor
CMT.java:291)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.jav
a:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer
.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(DelegatingMethodAccessor
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(TCPTransport.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.unregisterC
onnection(CachedConnectionManager.java:274)
at
org.jboss.resource.connectionmanager.LocalTxConnectionManager$LocalConne
ctionEventListener.connectionClosed(LocalTxConnectionManager.java:371)
at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle
(BaseWrapperManagedConnection.java:280)
at
org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnectio
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.releaseConnectio
n(Unknown Source)
at
org.apache.ojb.broker.accesslayer.StatementManager.closeResources(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.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
at
my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.createDoc(LogRe
ceivingSessionBean.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stat
elessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(
CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statele
ssSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterce
ptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptor
CMT.java:291)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.jav
a:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer
.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(DelegatingMethodAccessor
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(TCPTransport.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.RECEIVING_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.prepareStatemen
t(Unknown Source)
at
org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPreparedStmt
(Unknown Source)
at
org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(
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.createRsIterator(Unknow
n Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(
Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
at
my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.createDoc(LogRe
ceivingSessionBean.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stat
elessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(
CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statele
ssSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterce
ptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptor
CMT.java:291)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.jav
a:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer
.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(DelegatingMethodAccessor
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(TCPTransport.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.getPreparedStmt
(Unknown Source)
at
org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(
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.createRsIterator(Unknow
n Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(
Unknown Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
known Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
ery(Unknown Source)
at
my.com.shinyang.eply.service.ejb.LogReceivingSessionBean.createDoc(LogRe
ceivingSessionBean.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stat
elessSessionContainer.java:660)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(
CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(Statele
ssSessionInstanceInterceptor.java:77)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterce
ptor.java:107)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptor
CMT.java:291)
at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.jav
a:130)
at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer
.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(DelegatingMethodAccessor
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(TCPTransport.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.prepareStatemen
t(Unknown Source)
... 39 more
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]