Hi Thomas, Armin
In fact the " jwtImpl.newJwtTransaction();"
Do :
TransactionImpl tx = new TransactionImpl (getCurrentDatabase());
It instantiate a new transaction
Maybe I'm wrong, but I thought that I was obliged to use the Broker like
that in with theODMG/PB API both used.
// Create a new ODMG Tx
Tx = newTransaction();
// Start it
Tx.begin();
// Catch a broker on it
PersistenceBroker broker = ((HasBroker) tx).getBroker();
// Start the broker transaction
broker.beginTransaction();
// Use the broker for using the PB API
broker.getObjectByQuery(query)
// Stop the broker tx
broker.commitTransaction();
// Stop the ODMG Tx
tx.commit();
What is it wrong in this ??
Each time I call this method a new Tx is create, so why failed the lock ?
Armin,
I tried to put off the broker.beginTransaction() and broker.commit()
But I have now this error on the second in the lock line....very weird ???
It is not the same transaction !!
:
org.apache.ojb.odmg.TransactionImpl] INFO: Abort transaction was called on
tx [EMAIL PROTECTED], associated PB was
[EMAIL PROTECTED]
[JwtBOjects] null
org.odmg.TransactionNotInProgressException: Transaction was not open, call
tx.begin() before perform action, current status is: STATUS_ROLLEDBACK
at
org.apache.ojb.odmg.TransactionImpl.checkOpen(TransactionImpl.java:210)
at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:522)
at
com.jware.persistence.ojb.JwtTransactionImpl.commit(JwtTransactionImpl.java:
127)
at
com.jware.businessobjects.JwtBOjects.getNextOId(JwtBOjects.java:131)
at
com.jware.test.businessobjects.ApplicationACL.run(ApplicationACL.java:52)
at
com.jware.test.businessobjects.ApplicationACL.main(ApplicationACL.java:38)
Exception in thread "main"
-----Message d'origine-----
De�: Mahler Thomas [mailto:[EMAIL PROTECTED]
Envoy�: mardi 17 juin 2003 14:57
��: 'OJB Users List'
Objet�: RE: Lock bug ??
Hi Emmanuel,
don't call
broker.commitTransaction();
what does jwtImpl.newJwtTransaction(); do?
does it really instantiate a *new* transaction?
I have the impression that you work on the same transaction instance and try
to re-use the already closed broker transaction...
cheers,
thomas
> -----Original Message-----
> From: Emmanuel Dupont [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 17, 2003 12:53 PM
> To: OJB Users List
> Subject: Lock bug ??
>
>
> Hi all,
>
>
>
> Can someone tell me what is wrong with this piece of code ??
> I'm using OJB,
> rc1.
>
>
>
>
>
> When I call this method twice it failed on the second call on
> the lock line.
> I have only one column in my table. IT is an OID table generator.
>
> Whith :
>
>
>
> [org.apache.ojb.odmg.TransactionImpl] INFO: Abort transaction
> was called on
> tx [EMAIL PROTECTED],
> associated PB was
> [EMAIL PROTECTED]
>
> [org.apache.ojb.broker.accesslayer.ConnectionManagerImpl]
> INFO: Rollback was
> called, do rollback on current connection
> [EMAIL PROTECTED]
>
> [BOjects] null
>
> java.lang.ClassCastException
>
> TransactionImpl.lock(JwtTransactionImpl.java:86)
>
> BOjects.getNextOId(BOjects.java:112)
>
> org.apache.ojb.broker.TransactionNotInProgressException:
> ConnectionManager
> is NOT in transaction
>
> at
> org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.commitTra
> nsaction(Persi
> stenceBrokerImpl.java:390)
>
> at
> org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.com
> mitTransaction
> (DelegatingPersistenceBroker.java:117)
>
> at BOjects.getNextOId(JwtBOjects.java:124)
>
> Exception in thread "main"
>
>
>
>
>
> When I try to parse the code in the debugger, I doesn't
> failed ..??? Does
> that means there is some synchronization problems ?
>
>
>
> Tx, a lot, any help would be appreciated..
>
>
>
> --------------------------------------------
>
> public long getNextOId(Class oidObjectClass) {
>
> JwtTransaction tx = jwtImpl.newJwtTransaction();
>
> tx.begin();
>
> JwtDatabase db = jwtImpl.getJwtDatabase(null);
>
>
>
> PersistenceBroker broker = ((HasBroker) tx).getBroker();
>
> broker.beginTransaction();
>
>
>
> long result = -1;
>
>
>
> try {
>
> Query query = new QueryByCriteria(oidObjectClass, null);
>
>
>
> IObject oidObject = (IObject) broker.getObjectByQuery(query);
>
>
>
> // Check and increment the Oid ID
>
> result = oidObject.getId();
>
>
>
> // Delete the old oidObject
>
> db.deletePersistent(oidObject);
>
>
>
> // Create a new OidObject
>
> oidObject newOidObject = new oidObject ();
>
>
>
> // Lock the nextObject for write access
>
> tx.lock(newOidObject, WRITE); ///FAILED ON THE SECOND CALL
>
>
>
> // Set the modification
>
> oidObject.setId(result+1);
>
>
>
> } catch (Exception e) {
>
> // rollback in case of errors
>
> tx.abort();
>
> System.err.println("[BOjects] " + e.getMessage());
>
> e.printStackTrace();
>
> }
>
>
>
> broker.commitTransaction();
>
> tx.commit();
>
>
>
> return result;
>
> }
>
>
---------------------------------------------------------------------
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]