13

我们在 JBoss 5.1.0.GA 应用程序中有一个计时器服务触发任务,问题是我们无法更改事务超时。这个长的 Lucene 索引可能需要比默认的 300 秒限制更长的时间。

问题是如何更改超时值,在worker方法或类中添加@TransactionTimeout(1800) 没有任何效果。

编辑:在 deploy/transaction-jboss-beans.xml 中设置这个可以正常工作:

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

但是注释似乎对计时器启动或正常的无状态 EJB 都没有影响。

4

7 回答 7

9

我正在将 EJB3 与 Jboss 5.1.0.GA 一起使用,并已成功将此值设置为JBOSS_HOME/deploy/transaction-jboss-beans.xml.

默认值为 300 英寸<property name="transactionTimeout">300</property>

于 2012-05-15T21:32:58.527 回答
9

事务超时,JBOSS EPA 7.1 版本默认设置为 300。

jboss门户屏幕

添加这一行(<coordinator-environment enable-tsm-status="true" default-timeout="1200"/>)在路径“ ..standalone/configuration/standalone.xml ”中添加配置文件

                                    ....
<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>
于 2018-09-14T08:56:34.910 回答
4

尝试在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 。

于 2011-06-08T15:18:53.460 回答
2

您可以手动声明超时时间并在 Session Bean 中创建计时器。

下面是我的 Stateless Bean 的示例代码:

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

@Timeout
public void timeOutHandler(Timer timer){
  // code  
}
于 2010-08-06T11:00:09.593 回答
2

TransactionTimeout是 MDB 吗?他们有不同的注释。该链接提供了通过配置文件上的代码设置事务超时的各种选项。

于 2010-02-02T16:32:25.627 回答
2

与 Jboss 无关,但您可以通过 com.arjuna.ats.arjuna.coordinator.defaultTimeout=60 属性设置 arjuna 事务超时。

于 2017-07-15T20:47:33.937 回答
1

在元素中指定事务超时。此<blocking-timeout-millis>元素指示在等待连接和显示异常之前阻塞事务的最长时间(以毫秒为单位)。这仅在等待连接许可时阻塞,并且如果创建需要非常长时间的新连接,则不会显示异常。

<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>
于 2017-07-12T06:34:43.423 回答