Cómo cambiar el tiempo de timeout de transacciones en JBoss

El tiempo máximo que puede durar una transacción en JBoss resulta crucial al momento de correr procesos demasiado largos. En estos casos, cuando el plazo se vence, JBoss cancela la transacción, pero lamentablemente no hace rollback de ella, sino que simplemente la marcapara rollback, provocando una serie de problemas anexos como puede verse en el artículoProblemas con commit en JBoss usando CMT.

Como referencia, el tiempo por defecto en JBoss 4.0.5 es de 5 minutos (300 segundos).

La duración máxima de una transacción puede modificarse de dos maneras:

  • Usando el jmx-console se debe editar el MBean que se encuentra en la página principal en la sección jboss con el nombre service=TransactionManager. Dentro de la pantalla de administración de este MBean se debe modificar la propiedadTransactionTimeout, la cual está fijada en segundos. Esta forma tiene el problema de que dura sólo durante la actual ejecución del servidor, reseteándose cuando sea reiniciado.
  • Para modificar el parámetro de manera permanente se debe modificar el archivo
<carpeta de jboss>/server/<configuracion (default, all, minimal,
etc.)>/conf/jboss-service.xml

Dentro de este archivo se debe buscar el segmento del MBean cuya clase es“org.jboss.tm.TransactionManagerService. Dentro de este elemento del archivo XML existe un elemento attribute llamado TransactionTimeout con el valor.