Currently Being Moderated

TransactionTimeout

VERSION 16

Created on: Dec 22, 2004 10:16 AM by pjdc_00 - Last Modified:  Oct 29, 2008 12:42 PM by Jay Howell

How do I set the Transaction Timeout?

 

Transaction timeout (unit is always seconds) can be configured in various ways:

This argument is the same no matter if you are using JBossTM(<=4.0.5) or JBossJTA-Arjuna(>=4.2).

 

  • Globally: You can change this behavior globally by modifying the TransactionManagerService in /conf/jboss-service.xml (or /deploy/jta-service.xml for 4.0.3)

 

Version <= 4.0.5

 

       <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService"
          name="jboss:service=TransactionManager">
          <attribute name="TransactionTimeout">300</attribute>
          ...
       </mbean>

 

Version >= 4.2

      <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService" 
         name="jboss:service=TransactionManager">
         <attribute name="TransactionTimeout">300</attribute>
         <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> 
       </mbean>

 

This part is the same for either JBossTM or JBossJTA and is the same for ejb2 and ejb3

  • Per-method basis: Modifying the

    <transaction-timeout>

    element inside the <method> element of a session or entity bean. This is located in the META-INF/jboss.xml deployment descriptor of a session bean.

 

When the transaction timeout is specified at the method level, it overrides the default timeout. Further information about this element can be found in jboss-x.x.x/docs/dtd/jboss_4_0.dtd. Example taken from the testsuite:

       <?xml version="1.0"?>
       <jboss>
       
         <enterprise-beans>
            <session>
               <ejb-name>TxTimeout</ejb-name>
               <jndi-name>jbosstest/tm/TxTimeout</jndi-name>
               <exception-on-rollback>true</exception-on-rollback>
               <method-attributes>
                  <method>
                     <method-name>testOverriddenTimeoutExpires</method-name>
                     <transaction-timeout>5</transaction-timeout>
                  </method>
                  <method>
                     <method-name>testOverriddenTimeoutDoesNotExpire</method-name>
                     <transaction-timeout>20</transaction-timeout>
                  </method>
                </method-attributes>
            </session>
         </enterprise-beans>
       
       </jboss>
  • Using BMT: Calling javax.transaction.UserTransaction.setTransactionTimeout(int seconds). Please, be aware that this only applies to transactions started after this invocation on the same thread. Example:

       UserTransaction ut = (UserTransaction)ctx.lookup("java:comp/UserTransaction");
       ut.setTransactionTimeout(20);
       ut.begin();
       ...
       ut.commit();

 

 

  • Using it with EJB3 annotations..

You can specify it as an activation configuration

@ActivationConfigProperty(propertyName="transactionTimeout", propertyValue="1") for the entire bean

or you can specify it at a method level using

@TransactionTimeout(1500)

 

Referenced by:

Average User Rating
(0 ratings)




There are no comments on this article

More Like This

  • Retrieving data ...

More by pjdc_00