2010-02-02 14 views
7

Tenemos una tarea activada por el servicio del temporizador en la aplicación JBoss 5.1.0.GA y el problema es que no podemos cambiar el tiempo de espera de la transacción. Esta indexación larga de Lucene puede llevar más tiempo que el límite predeterminado de 300 segundos.JBoss configuración de tiempo de espera de transacción?

La pregunta es cómo cambiar el valor de tiempo de espera, agregando @TransactionTimeout (1800) al método de trabajador o la clase no tuvo ningún efecto.

Editar: Al establecer esta en Implementación/transacción jboss- beans.xml funciona bien:

<property name="transactionTimeout">1800</property> 

pero no parece la anotación de tener efecto en ambos temporizador iniciado o EJB sin estado normales.

+0

'@ TransactionTimeout' no es una anotación JavaEE estándar ... ¿de dónde es? – skaffman

+1

Es una anotación específica de JBoss. –

Respuesta

1

TransactionTimeout ¿es un MDB? ellos tienen una anotación diferente. El enlace brinda varias opciones para configurar el tiempo de espera de transacción, ya sea a través del código en los archivos de configuración.

1

Puede declarar manualmente el período de tiempo de espera y crear un temporizador en Session Bean.

A continuación se muestra el código de ejemplo de mi sin estado Bean:

public void createTimer(String timerName) { 
    //... 
    sessionContext.getTimerService().createTimer(timeLongValue, timerName); 
    //... 
} 

@Timeout 
public void timeOutHandler(Timer timer){ 
    // code 
} 
2

intente configurar esta en jboss- service.xml:

<!-- JBoss Transactions JTA --> 
    <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService" 
     name="jboss:service=TransactionManager"> 
     <attribute name="TransactionTimeout">120</attribute> <!-- timeout in seconds--> 
     <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> 
    </mbean> 

Esta es una configuración basada en servidor, a fin de buscar conf/jboss-service.xml en el directorio del servidor.

7

Estoy usando EJB3 con Jboss 5.1.0.GA y he establecido con éxito este valor en JBOSS_HOME/deploy/transaction-jboss-beans.xml.

El valor predeterminado era 300 en <property name="transactionTimeout">300</property>

0

Especifica el tiempo de espera de transacción en el elemento element.This <blocking-timeout-millis> indica el tiempo máximo en milisegundos para bloquear una transacción a la espera de una conexión y antes de mostrar una excepción. Esto bloquea solo mientras se espera un permiso para una conexión, y no muestra una excepción si se crea una nueva conexión que lleva un tiempo excesivamente largo.

<subsystem xmlns="urn:jboss:domain:datasources:4.0"> 
      <datasources> 
       <datasource jndi-name="java:jboss/xyz" pool-name="abc" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:sqlserver://xx.xx.xxx.xxx:1433;databaseName=xxxx</connection-url> 
        <driver>SQLServerDriver</driver> 
        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
        <pool> 
         <min-pool-size>50</min-pool-size> 
         <max-pool-size>150</max-pool-size> 
         <prefill>false</prefill> 
        </pool> 
        <security> 
         <user-name>xxx</user-name> 
         <password>xxx</password> 
        </security> 
        <timeout> 
         <blocking-timeout-millis>36000</blocking-timeout-millis> 
        </timeout> 
       </datasource> 
       <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> 
        <driver>h2</driver> 
        <security> 
         <user-name>sa</user-name> 
         <password>sa</password> 
        </security> 
       </datasource> 
       <drivers> 
        <driver name="SQLServerDriver" module="com.microsoft.sqlserver"> 
         <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerDataSource</xa-datasource-class> 
        </driver> 
        <driver name="h2" module="com.h2database.h2"> 
         <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
        </driver> 
       </drivers> 
      </datasources> 
     </subsystem> 
0

no relacionadas con Jboss pero se puede establecer el tiempo de espera de transacción a través de Arjuna com.arjuna.ats.arjuna.coordinator.defaultTimeout = 60 propiedad.

Cuestiones relacionadas