Hi Armin,
 
Thanks a lot for your response. Currently, my code looks like this:
 
javax.transaction.UserTransaction userTx = null;
PersistenceBroker broker = null;

try {
    InitialContext initCtx = new InitialContext();
    userTx = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
    userTx.begin();

    broker = PersistenceBrokerFactory.defaultPersistenceBroker();
    
    broker.store(objA);
    broker.store(objB);
    broker.deleteByQuery(someQuery);
    broker.store(objC);
    
    userTx.commit();
} catch(Exception e) {
    userTx.rollback();
} finally {
    if(null != broker) {
        broker.close();
    }
}
 
Now, the warning message I reported before doesn't occur on each store call 
anymore. However, whenever there is an error and I attempt a transaction roll 
back, I get this:
 
[org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl$PersistenceBrokerSyncImpl]
 ERROR: Abort PB-tx, status of JTA tx is STATUS_ROLLEDBACK
 
Why would this happen? Any ideas? Any help is greatly appreciated. 
 
Thanks and regards,
-Vamsi

----- Original Message ----
From: Armin Waibel <[EMAIL PROTECTED]>
To: OJB Users List <[email protected]>
Sent: Thursday, May 4, 2006 12:45:28 PM
Subject: Re: Help needed for OJB transactions


Hi Vamsi,

Vamsi Atluri wrote:
> Hello all,
>  
> I am having problems with OJB transactions. I am currently using OJB1.0.1 on 
> WSAD 5.1.2 using JDK 1.3.1.
>  
> My settings and code are as follows:
>  
> useAutoCommit="0" 
> ignoreAutoCommitExceptions="false"
>  
> PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFactorySyncImpl
> ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl
>  
> And the code looks as follows(I am using WSAD 5.1.2):
>  
> javax.transaction.UserTransaction userTx = null;
> try {
>     InitialContext initCtx = new InitialContext();
>     userTx = (UserTransaction)initCtx.lookup("java:comp/UserTransaction");
>     userTx.begin();
>     
>     broker.store(objA);
>     broker.store(objB);
>     broker.deleteByQuery(someQuery);
>     broker.store(objC);
>     
>     userTx.commit();
> } catch(Exception e) {
>     userTx.rollback();
> }
>  
> But whenever I am calling broker.store(), I am getting the following warning 
> on the console:
>  
> [org.apache.ojb.broker.core.PersistenceBrokerImpl] WARN: No running tx found, 
> please only store in context of an PB-transaction, to avoid side-effects - 
> e.g. when rollback of complex objects
>

It seems you lookup the broker instance before you start the 
UserTransaction. In this case OJB can't synchronize the broker instance 
with the tx. Please create the broker instance after the UserTransaction 
starts and see what happens.

regards,
Armin


> Now, it appears to me that the broker.store() is not going through the 
> transaction. Am I doing something wrong??
>  
> Also, a very strange thing happened today. I had a large amount of data to 
> store and it was taking a long time and the transaction timed out after 120 
> seconds. Is this possibly because the user transaction started and none of 
> the broker store calls are going through it. BUT, the strangest thing I have 
> found is if any error occurs, the store calls ARE rolling back, so they are 
> part of SOME transaction. Also, where is the 120 seconds setting coming from? 
> I thought transactions are not supposed to time out during activity!
>  
> This is getting very confusing. Can anyone throw some light on my situation? 
> Any help is greatly appreciated. Thanks.
>  
> Regards,
> -Vamsi

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to