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 Fri, 31 Jul 2009 16:26:56 GMT

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