jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Podatelev <brightnesslev...@gmail.com>
Subject Re: How to handle XA Transactions?
Date Wed, 27 May 2009 11:53:04 GMT
Check this out:

On Wed, May 27, 2009 at 3:39 PM, Peter Henzler <phe@scodi.ch> wrote:
> Hi Jukka
> Thank you for the reply.
>> The sessions you get from the Repository.login() method from
>> Jackrabbit implement the org.apache.jackrabbit.api.XASession
>> interface, whose getXAResource() method can be used to attach the
>> session to a distributed XA transaction.
>> The nice thing about the JCA packaging is that it handles the
>> XAResource part automatically for you, but there's nothing stopping
>> you from doing the same with a little bit of code also in other
>> deployment scenarios.
> Do you mean code like this?:
>        Transaction tx = tm.getTransaction(); // get the running javax.transaction.Transaction
>        XASession session = (XASession)repository.login(creds, rename);
>        XAResource res = session.getXAResource();
>      tx.enlistResource(res);
>        // do changes in repository through the session interface
>      session.logout();
>      tx.delistResource(res, XAResource.TMSUCCESS);
> Or what code do you mean?
> Would that be enough for committing the repository changes when the global container
managed XA Transaction with changes of other database connections get commited or to get rollbacked
if one of those others throws an exeption?
>>> If I am using the Jackrabbit Datastore and Persistence configured with an XA
>>> JDBC-Driver, do I really need Transactions in Jackrabbit. Wouldn't the XA
>>> JDBC-Driver work in a 2phase commit handled by the installed JTA
>>> TransactionManager ?
>>No. Jackrabbit expects to be in full control of the underlying
>>database connection, so having it included in an externally managed
>>transaction is not a good idea. We've seen quite a few problems caused
>>by this.
> Ok, I unterstand that Jackrabbit want it's own database connection that is not used by
anyone else.
> You mean that the configured JDBC Driver for the Jackrabbit repository should be a normal
JDBC Driver instead of a XA JDBC Driver?
> Best regards
> Peter


View raw message