I had this problem in the past, and what I had to do is change my code
to something like (this is a delete sample):
PersistenceBroker broker = null;
try {
broker=PersistenceBrokerFactory.defaultPersistenceBroker( );
// Just a sanity check.
// I've never reached here inside
// a existing transaction!!!
if( !broker.isInTransaction( ) ) {
broker.beginTransaction( );
}
broker.delete( o );
broker.commitTransaction( );
} catch( PersistenceBrokerException e ) {
try {
broker.abortTransaction( );
} catch( Exception e1 ) {}
throw e1; //just rethrow the exception forward
} finally {
try {
// I don't wan't to catch this...
// If something important happens,
// it'll be in log...
broker.close( );
} catch( Exception e2 ) {}
}
This way worked for me in SapDB and MS SQL Server 2K...
Best regards,
Edson Richter
Em Ter, 2003-07-15 �s 12:58, Dave Hodson escreveu:
> I'm using SQL Server 2k, with the MSFT drivers
> Can you post a few snippets of your code?
>
> Thx
>
> Dave
>
>
>
> > -----Original Message-----
> > From: Ryan Vanderwerf [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, July 15, 2003 8:32 AM
> > To: OJB Users List
> > Subject: RE: ConnectionManager is already in transaction
> >
> >
> > 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.beginTransact
> > ion(Persis
> > tenceBrokerImpl.java:361)
> > at
> > org.apache.ojb.broker.core.DelegatingPersistenceBroker.beginTr
> > ansaction(
> > 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.ge
> > tUniqueId(
> > AbstractSequenceManager.java:252)
> > at
> > org.apache.ojb.broker.util.sequence.AbstractSequenceManager.ge
> > tUniqueVal
> > ue(AbstractSequenceManager.java:167)
> > at
> > org.apache.ojb.broker.util.BrokerHelper.getAutoIncrementValue(
> > BrokerHelp
> > er.java:303)
> > at
> > org.apache.ojb.broker.util.BrokerHelper.getValuesForObject(Bro
> > kerHelper.
> > java:349)
> > at
> > org.apache.ojb.broker.util.BrokerHelper.getAllRwValues(BrokerH
> > elper.java
> > :380)
> > at
> > org.apache.ojb.broker.accesslayer.StatementManager.getAllValue
> > s(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(Per
> > sistenceBr
> > okerImpl.java:1919)
> > at
> > org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Persist
> > enceBroker
> > Impl.java:1834)
> > at
> > org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Persist
> > enceBroker
> > Impl.java:1792)
> > at
> > org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(D
> > elegatingP
> > ersistenceBroker.java:161)
> > at
> > org.apache.ojb.odmg.states.StateNewDirty.commit(StateNewDirty.
> > java:148)
> > at
> > org.apache.ojb.odmg.ObjectEnvelopeTable.commitAllEnvelopes(Obj
> > ectEnvelop
> > eTable.java:234)
> > at
> > org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeT
> > able.java:
> > 189)
> > at
> > org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(Transact
> > ionImpl.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]
> >
> >
>
> ---------------------------------------------------------------------
> 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]