Nous avons une tâche déclenchée du service de minuterie dans l'application JBoss 5.1.0.ga et le problème est que nous ne pouvons pas modifier le temps de transaction. Cette longue indexation de Lucene peut prendre plus de temps que la limite de 300 secondes par défaut.
La question est de savoir comment modifier la valeur du délai d'attente, l'ajout @TransactionTimeout (1800) à la méthode ouvrière ou la classe n'avait aucun effet. P>
EDIT: réglage de la réglage / transaction-jboss- haricots.xml fonctionne bien: p> mais l'annotation ne semble pas avoir effet sur l'une ou l'autre minuterie initiée ou la normale EJBS apatrides. p> p>
7 Réponses :
TransactionTimeout est-ce un MDB? Ils ont une annotation différente. Le lien donne aux différentes options pour définir le délai de transation soit via le code sur les fichiers de configuration. P>
Vous pouvez déclarer manuellement la période de délai d'attente et créer une minuterie dans le haricot de session.
ci-dessous est un échantillon de code de mon haricot apatride: p>
Essayez de régler ceci dans Il s'agit d'une configuration basée sur le serveur, alors recherchez Conf / JBoss Service. xml strong> sous votre répertoire de serveur. p> p>
J'utilise ejb3 avec jboss 5.1.0.ga et avez défini avec succès
Cette valeur dans La valeur par défaut était de 300 dans jboss_home / déployé / transaction-jboss-haricons.xml code>. p>
Spécifiez le délai de transaction dans l'élément
<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>
non lié à jboss mais vous pouvez définir le délai d'expiration de transaction arjuna via com.arjuna.ats.arjuna.coordinator.defaulttimeout = 60 biens. P>
Délai de transaction, paramètres par défaut dans la version de JBoss EPA 7.1 est 300.
Ajouter cette ligne (
....
<subsystem xmlns="urn:jboss:domain:transactions:4.0">
<core-environment>
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
<coordinator-environment enable-tsm-status="true" default-timeout="1200"/>
<object-store path="tx-object-store" relative-to="jboss.server.data.dir"/>
</subsystem>
@TransactionTimeout Code> n'est pas une annotation Javae standard ... D'où vient-il?
C'est une annotation spécifique JBoss.