2010-02-02 11 views
7

Wir haben eine zeitgeberdienstgesteuerte Aufgabe in der JBoss 5.1.0.GA-Anwendung und das Problem ist, dass wir das Transaktionstimeout nicht ändern können. Diese lange Lucene-Indizierung kann länger dauern als die Standardgrenze von 300 Sekunden.Einstellung für JBoss-Transaktionszeitlimit?

Die Frage ist, wie man den Timeout-Wert ändert, indem man @TransactionTimeout (1800) der worker-Methode hinzufügt oder die Klasse keinen Effekt hat.

Edit: diese Einstellung in deploy/transaktions jboss-beans.xml funktioniert:

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

aber die Anmerkung scheint nicht zu wirken auf beiden Timer initiiert oder normalen staatenlos EJBs.

+0

'@ TransactionTimeout' ist keine standardmäßige JavaEE-Annotation ... woher kommt die? – skaffman

+1

Es handelt sich um eine JBoss-spezifische Annotation. –

Antwort

1

TransactionTimeout ist es eine MDB? Sie haben eine andere Anmerkung. Die Verbindung bietet die verschiedenen Optionen zum Einstellen des Übertragungs-Timeouts entweder über den Code in den Konfigurationsdateien.

1

Sie können das Zeitlimit manuell deklarieren und einen Timer in Session Bean erstellen.

Im Folgenden finden Sie Beispielcode meines Stateless Bean:

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

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

Versuchen Sie dies in jboss-service.xml Einstellung:

<!-- 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> 

Dies ist eine Server-basierte Konfiguration, so sucht conf/jboss-service.xml unter Ihrem Serververzeichnis.

7

Ich verwende EJB3 mit Jboss 5.1.0.GA und habe diesen Wert erfolgreich in JBOSS_HOME/deploy/transaction-jboss-beans.xml gesetzt.

Der Standard war 300 in <property name="transactionTimeout">300</property>

0

das Transaktionszeitlimit Geben im <blocking-timeout-millis> element.This Elemente zeigt die maximale Zeit in Millisekunden, um eine Transaktion zu blockieren, während eine Verbindung wartet und, bevor eine Ausnahme anzuzeigen. Diese Option blockiert nur, wenn auf eine Genehmigung für eine Verbindung gewartet wird, und zeigt keine Ausnahme an, wenn eine neue Verbindung erstellt wird, die übermäßig lange dauert.

<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

Nicht zu Jboss verwendet, aber Sie können arjuna Transaktion Timeout über com.arjuna.ats.arjuna.coordinator.defaultTimeout = 60 Eigenschaft festgelegt.

Verwandte Themen