Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

UserTransaction doesn't rollback (JOTM)

843854Mar 31 2005 — edited Mar 2 2011
I'm running tomcat 5.5 with SQL Server 2000. I'm working on adding transaction support through UserTransaction with JOTM.

I installed JOTM, a Transcation Manager, but it doesn't seem to work. When I try to rollback an update, it still commits it.

###My code (snippet):
Connection con = DAOUtil.getConnection();
        String sqlStmt = "INSERT INTO Building (Street, City, State, Zip, CLLI, " +
                       "SWC, ContactName, ContactPhone, CommonName) " +
                       "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
      PreparedStatement saveBuilding = null;

            Context ctx = new InitialContext();

            UserTransaction ut = (UserTransaction)ctx.lookup("java:comp/UserTransaction");

            ut.begin();

            saveBuilding = con.prepareStatement(sqlStmt, Statement. 
                                       RETURN_GENERATED_KEYS);
         
            saveBuilding.setString(1, building.getStreet());
            ...

           saveBuilding.execute();

            ut.rollback();       //THIS DOESN'T WORK
###Server.xml:
   
<Server>
<GlobalNamingResources>
   <Resource auth="Container" name="UserTransaction" 
                       type="javax.transaction.UserTransaction" 
                       jotm.timeout="60" 
                       factory="org.objectweb.jotm.UserTransactionFactory" />

      <Resource name="jdbc/cafe" 
                           type="javax.sql.DataSource" 
                           driverClassName="net.sourceforge.jtds.jdbc.Driver" 
                           password="XXX" 
                           maxIdle="5" 
                           maxWait="300" 
                           validationQuery="Select Val From ValueItem" 
                           username="ABC" 
                           url="jdbc:jtds:sqlserver://SERVER_NAME:1433;
                           DatabaseName=ABCD;" 
                           factory="org.objectweb.jndi.DataSourceFactory" 
                           maxActive="10" />
</GlobalNamingResources>
</Server>
###domain.xml:
<Context displayName="CaFE" 
                      docBase="CaFE" 
                      path="/CaFE" 
                      reloadable="true" 
                      workDir="C:\Tomcat-5.5\webapps\CaFE\work">

    <ResourceLink global="UserTransaction" 
                               name="UserTransaction" 
                              type="javax.transaction.UserTransaction"/>

   <ResourceLink global="jdbc/cafe" 
                              name="jdbc/cafe" 
                              type="javax.sql.DataSource"/>
</Context>
I'm able to read/get the UserTransaction from the JNDI tree. But for some reason the transaction doesn't work.

Any ideas?

Thanks in advance.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 30 2011
Added on Mar 31 2005
5 comments
640 views