jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ian Boston <...@tfd.co.uk>
Subject Re: User Managed Transactions...
Date Fri, 31 Jul 2009 21:01:56 GMT
IIRC you have to bind the jcr session to the transaction. In  
Jackrabbit the session is actually an XASession with a getXAResource()  
method so you can bind the session with something like this.

Transaction transaction = transactionManager.getTransaction();
       if (transaction != null) {
          
transaction.enlistResource(((XASession)session).getXAResource());
       }


HTH
Ian

On 31 Jul 2009, at 17:26, Gadbury wrote:

>
> Hi all,
>
> I have finally managed to get somewhere with jotm and Tomcat 6.0  
> having
> followed the tutorial provided in the above links.  I am finally  
> getting the
> UserTransaction via JNDI lookup (after classloader issues and naming
> exceptions) and I am testing that new
> InitialContext().lookup("java:comp/UserTransaction"); is an instance  
> of
> UserTranasction.
>
> Unfortunately, every session.save() called in between the  
> utx.begin() and
> utx.commit() persists changes so the UserTranasction is not having an
> effect.  I was hoping that session.save() would not persist changes  
> in the
> scope of a UserTranasction but would ensure that node UUIDs are  
> permanently
> assigned to new nodes.  For example:
>
>        Session session = getSession();
>
>        // Get user transaction (for example, through JNDI)
>        UserTransaction utx = (UserTransaction) new
> InitialContext().lookup("java:comp/UserTransaction");
>
>        JcrUserDao userDao = new JcrUserDao();
>        JcrProductDao productDao = new JcrProductDao();
>
>        utx.begin();
>
>        Node newUserNode = userDao.create(aUser, session);
>
>        session.save();
>
>        String UUID = newUserNode.getUUID();
>
>        Node newProductNode = productDao.create(aProduct, session);
>
>        session.save();
>
>        utx.commit();
>
> If I step through the above code in debug within Eclipse, and  
> terminate the
> Tomcat server after the first session.save() but before the  
> utx.commit(), I
> can see that the the changes are made by the first Dao method call
> userDao.create(aUser, session) are persisted.
>
> So far I have put all the required jotm jars in %TOMCAT_HOME%/lib  
> from the
> distribution bundle jotm 2.1.4.
>
> My context.xml is configured with:
>
> <Transaction factory="org.objectweb.jotm.UserTransactionFactory"/>
>
>
> My carol.properties is saved in WEB-INF/Classes and is as follows:
>
> # JNDI (Protocol Invocation)
> carol.protocols=jrmp
>
> # Local RMI Invocation
> carol.jvm.rmi.local.call=true
>
> # do not use CAROL JNDI wrapper
> carol.start.jndi=false
>
> # do not start a name server
> carol.start.ns=false
>
> # Naming Factory
> carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
>
>
> Is there some further configuration required?  No exceptions are being
> thrown any more and the UserTransaction is retrieved via JNDI lookup  
> yet the
> UserTranasction appears not to be functioning as expected.
>
> Any advice would be greatly appreciated.  Thanks for your time.   
> Regards,
>
> James.
>
>
>
> Vijay Pandey wrote:
>>
>> There might be a line break and you might not be copying the full  
>> URL. I
>> just checked and the URL is alive.
>>
>> -----Original Message-----
>> From: Gadbury [mailto:gadbury@googlemail.com]
>> Sent: Thursday, July 30, 2009 3:59 PM
>> To: users@jackrabbit.apache.org
>> Subject: RE: User Managed Transactions...
>>
>>
>> Thank you Vijay, I shall take a closer look tomorrow.  By the way,  
>> the
>> second
>> link gives me a 404.
>>
>> Cheers,
>>
>> James
>>
>>
>> Vijay Pandey wrote:
>>>
>>> You might want to take a look at this
>>>
>>>
>> http://static.raibledesigns.com/downloads/howto-tomcat-jotm.html#5.5-config
>>>
>>> along with this
>>>
>>>
>> http://www.nabble.com/Re%3A-UserTransaction%2C-JOTM-and-Tomcat-5.5.x-p288894
>>> 3.html
>>>
>>> Vijay
>>>
>>> -----Original Message-----
>>> From: Gadbury [mailto:gadbury@googlemail.com]
>>> Sent: Thursday, July 30, 2009 2:17 PM
>>> To: users@jackrabbit.apache.org
>>> Subject: Re: User Managed Transactions...
>>>
>>>
>>> Hi again all.
>>>
>>> I have been trying to get javax.transaction.UserTransaction  
>>> working by
>>> JNDI
>>> lookup.  I use Eclipse Galileo and Tomcat 6.0.  I am trying trying
>>> retreive
>>> a UserTransaction as follows  (I have tried both):
>>>
>>> UserTransaction utx = new
>>> InitialContext().lookup("java:comp/UserTransaction");
>>>
>>> UserTransaction utx = new
>>> InitialContext().lookup("java:comp/env/UserTransaction");
>>>
>>> However, an exception is thrown stating that I must setup a system  
>>> or
>>> environment property, or the application context.  Do I need to  
>>> configure
>>> the resource and / or environment elements in context.xml?  For  
>>> example,
>>> the
>>> resource configuration:
>>>
>>> <context>
>>> <Resource name="UserTransaction" auth="Container"
>>>    type="javax.transaction.UserTransaction"/>
>>>  <ResourceParams name="UserTransaction">
>>>    <parameter>
>>>      <name>factory</name>
>>>      <value>org.objectweb.jotm.UserTransactionFactory</value>
>>>    </parameter>
>>>    <parameter>
>>>      <name>jotm.timeout</name>
>>>      <value>60</value>
>>>    </parameter>
>>>  </ResourceParams>
>>> </context>
>>>
>>> Does Tomcat 6.0 support UserTransaction by JNDI, or do I need to use
>>> another
>>> technology such as JOTM or Jencks?  Ideally I wouldn't have to  
>>> install
>>> and
>>> configure one of the other technologies.
>>>
>>> Thanks for reading.  Kind regards,
>>>
>>> James
>>> -- 
>>> View this message in context:
>>>
>> http://www.nabble.com/User-Managed-Transactions...-tp24687924p24745618.html
>>> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/User-Managed-Transactions...-tp24687924p24747221.html
>> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>>
>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/User-Managed-Transactions...-tp24687924p24759260.html
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>


Mime
View raw message