2010-02-02 2 views
7

У нас есть задача запуска таймера в приложении JBoss 5.1.0.GA, и проблема в том, что мы не можем изменить время транзакции. Это длинное индексирование Lucene может занять больше времени, чем 300-секундный предел по умолчанию.Настройка тайм-аута транзакции JBoss?

Вопрос заключается в том, как изменить значение таймаута, добавив @TransactionTimeout (1800) к методу работника или к классу не получив никакого эффекта.

Edit: Установка этого в Deploy/транзакции-JBoss-beans.xml работает отлично:

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

но аннотаций, кажется, не имеет влияния ни на таймере, инициированной или обычных лиц без EJBs.

+0

'@ TransactionTimeout' не является стандартной аннотацией JavaEE ... откуда она взялась? – skaffman

+1

Это аннотация JBoss. –

ответ

1

TransactionTimeout Это MDB? у них есть другая аннотация. Ссылка дает различные варианты установки тайм-аута передачи через код в файлах конфигурации.

1

Вы можете вручную объявить период ожидания и создать таймер в Session Bean.

Ниже приведен пример кода моего Stateless Bean:

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

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

Попробуйте установить это в 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> 

Это конфигурация сервера на базе, так что ищите conf/jboss-service.xml под вашим каталогом сервера.

7

Я использую EJB3 с Jboss 5.1.0.GA и успешно установил это значение в JBOSS_HOME/deploy/transaction-jboss-beans.xml.

по умолчанию 300 в <property name="transactionTimeout">300</property>

0

Укажите тайм-аут транзакции в <blocking-timeout-millis> element.This элемента указывает максимальное время в миллисекундах, чтобы заблокировать транзакцию во время ожидания соединения и перед отображением исключение. Это блокируется только в ожидании разрешения для подключения и не отображает исключение при создании нового соединения, которое занимает слишком много времени.

<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, но вы можете установить Арджун тайм-аут транзакции через com.arjuna.ats.arjuna.coordinator.defaultTimeout = 60 собственности.

Смежные вопросы