jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gadbury <gadb...@googlemail.com>
Subject Re: User Managed Transactions...
Date Sat, 01 Aug 2009 10:56:55 GMT

Hi Ian,

Thank you for the pointers.  Was I wrong to use UserTransaction?  What type
of tranasction is that in your example?  It looks to me like you're using
Transaction and TransactionManager interfaces from javax.transaction.  How
do I get a TransactionManager instance?  Can I still use JNDI or is there an
alternative (in fact, JNDI presents me a problem with unit testing as
without the web application running on the Tomcat server, the JNDI lookup
cannot get the UserTransaction instance) ?  

Sorry for the silly questions.  Thanks for your time.  Regards,

James


Ian Boston wrote:
> 
> 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.
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/User-Managed-Transactions...-tp24687924p24768096.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Mime
View raw message