2010-02-02 27 views
7

JBoss 5.1.0.GA uygulamasında zamanlayıcı hizmeti tetiklenen bir görevimiz var ve sorun şu ki işlem zamanını değiştiremiyoruz. Bu uzun Lucene indeksleme varsayılan 300 saniye sınırından daha uzun sürebilir.JBoss işlem zaman aşımı ayarı?

Sorun, işçinin yöntemine @TransactionTimeout (1800) ekleyerek zaman aşımı değerini nasıl değiştireceğiniz veya sınıfın herhangi bir etkisinin olmadığı.

Düzenleme:

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

ama açıklama ya başlatılan zamanlayıcı veya normal vatansız EJB'ler üzerinde etkiye sahip görünmemektedir: dağıtma/işlem-jboss-beans.xml bu ayarlanması gayet iyi çalışıyor.

+0

'@ TransactionTimeout' standart bir JavaEE notu değil ... nereden geliyor? – skaffman

+1

Bu JBoss'a özel bir açıklamadır. –

cevap

1

TransactionTimeout Bu bir MDB mi? onlar farklı bir açıklama var. Bağlantı, geçiş zaman aşımını yapılandırma dosyalarındaki kod aracılığıyla ayarlamak için çeşitli seçenekler sunar.

1

Zamanaşımı süresini manuel olarak bildirebilir ve Oturum Bean’inde bir zamanlayıcı oluşturabilirsiniz.

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

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

jboss-service.xml bu belirlemeyi deneyin:

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

Bu bir sunucu tabanlı konfigürasyon, böylece aramaya Aşağıda

benim Vatansız Bean örnek kod Sunucu dizininizin altında conf/jboss-service.xml.

7

Jboss 5.1.0.GA ile EJB3 kullanıyorum ve JBOSS_HOME/deploy/transaction-jboss-beans.xml numaralı telefondan bu değeri başarıyla ayarladınız.

varsayılan <blocking-timeout-millis> element.This elemanı işlem zaman aşımı belirler <property name="transactionTimeout">300</property>

0

300 olan bir bağlantı için ve bir istisna görüntülemeden önce beklerken bir işlemi engellemek için milisaniye cinsinden maksimum zamanı gösterir. Bu, yalnızca bir bağlantı için izin beklenirken engellenir ve çok uzun süren yeni bir bağlantı oluşturuyorsa bir istisna gösterilmez.

<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

JBoss alakalı olabilecek ancak com.arjuna.ats.arjuna.coordinator.defaultTimeout = 60 özellik aracılığıyla arjuna işlem zaman aşımı ayarlayabilirsiniz değil.