I've had the same problems with the PB api too. What DB Are you using? The best way for me to get around it was to make wrapper methods that get and close broker connections, and to check the transaction state before trying to begin, commit, and abort a transaction. I'm using SQL Server 2k and the Inet Opta driver.
-----Original Message----- From: Dave Hodson [mailto:[EMAIL PROTECTED] Sent: Monday, July 14, 2003 7:47 PM To: [EMAIL PROTECTED] Subject: ConnectionManager is already in transaction I'm using 1.0RC3 and running into the following error: "ConnectionManager is already in transaction" when trying to commit a new transaction to the DB. Any queries by criteria or identity work properly. The method is a member of a class that is extended by others -- items to be written to the DB are passed as generic objects. Suggestions? What am I doing incorrectly? Dave Code is as follows: --------------------- protected void Put (Object o, Class c) { Transaction tx = odmg.newTransaction(); tx.begin(); try { // lock the product for write access tx.lock(o, tx.WRITE); tx.commit(); } catch (Throwable t) { tx.abort(); log.error("Put failed for " + c.getName() + " : " + t); } } Stack is as follows: ------------------------ [org.apache.ojb.broker.accesslayer.JdbcAccessImpl] ERROR: PersistenceBrokerException during the execution of the insert: ConnectionManager is already in transaction ConnectionManager is already in transaction org.apache.ojb.broker.TransactionInProgressException: ConnectionManager is already in transaction at org.apache.ojb.broker.core.PersistenceBrokerImpl.beginTransaction(Persis tenceBrokerImpl.java:361) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTransaction( DelegatingPersistenceBroker.java:114) at org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getSequen ce(SequenceManagerHighLowImpl.java:260) at org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getUnique Long(SequenceManagerHighLowImpl.java:201) at org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueId( AbstractSequenceManager.java:252) at org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueVal ue(AbstractSequenceManager.java:167) at org.apache.ojb.broker.util.BrokerHelper.getAutoIncrementValue(BrokerHelp er.java:303) at org.apache.ojb.broker.util.BrokerHelper.getValuesForObject(BrokerHelper. java:349) at org.apache.ojb.broker.util.BrokerHelper.getAllRwValues(BrokerHelper.java :380) at org.apache.ojb.broker.accesslayer.StatementManager.getAllValues(Statemen tManager.java:725) at org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(StatementM anager.java:487) at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAcces sImpl.java:198) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBr okerImpl.java:1919) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBroker Impl.java:1834) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBroker Impl.java:1792) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingP ersistenceBroker.java:161) at org.apache.ojb.odmg.states.StateNewDirty.commit(StateNewDirty.java:148) at org.apache.ojb.odmg.ObjectEnvelopeTable.commitAllEnvelopes(ObjectEnvelop eTable.java:234) at org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java: 189) at org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(TransactionImpl.ja va:342) at org.apache.ojb.odmg.TransactionImpl.prepare(TransactionImpl.java:595) at org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:545) at net.messagecast.rec.RecOJBMgr.Put(RecOJBMgr.java:83) --------------------------------------------------------------------- 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]
