Integrating JOTM 1.5.3 in Tomcat 5.0.x
Recently I have integrated Tomcat 5.0.x with JOTM 1.5.3, running on J2SE 1.4.2.
Needless to say, Greg already provides the Jetty-Extra package which already provides the Jetty-JOTM integration.
The steps for Tomcat-JOTM integration are the following:
It is that simple.
It is very important not to include jotm.jar in WEB-INF/lib of your application.
If you want to see some extra logging to be sure everything went fine, just drop Log4J's jar into
Jetty|Tomcat + JOTM + Hibernate does the job for me :-)
Needless to say, Greg already provides the Jetty-Extra package which already provides the Jetty-JOTM integration.
The steps for Tomcat-JOTM integration are the following:
- Copy to
$TOMCAT/common/lib
the following jars:- carol.jar
- connector-1_5.jar
- jotm.jar
- jta-spec1_0_1.jar
- objectweb-datasource.jar
- xapool.jar
I found that carol does not need any stub since it works in local mode (see below). - Create a
carol.properties
file in$TOMCAT/common/classes
containing the following text:
# lmi stands for Local Method Invocation (it's a "fake" RMI)
carol.protocols=lmi
# do not use CAROL JNDI wrapper
carol.start.jndi=false
# do not start a name server
carol.start.ns=false - Configure Tomcat's Context (either in
$TOMCAT/conf/server.xml
or in$TOMCAT/conf/Catalina/localhost/<mywebapp>.xml
file) so that a UserTransaction object is bound in JNDI, as shown below:
<Context ...>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
...
</ResourceParams>
<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>
Normally there is also a DataSource configured, and this DataSource is also referenced inWEB-INF/web.xml
, but that should be there independently of the transaction manager.
It is that simple.
It is very important not to include jotm.jar in WEB-INF/lib of your application.
If you want to see some extra logging to be sure everything went fine, just drop Log4J's jar into
$TOMCAT/common/lib
and add a log4j.properties
in $TOMCAT/common/classes
.
Jetty|Tomcat + JOTM + Hibernate does the job for me :-)