如何在WebSphere Liberty Batch中配置事务超时?

时间:2016-04-29 18:44:03

标签: java websphere-liberty jsr352 java-batch

  • javax.transaction.global.timeout 的作用是什么?
  • 我是否需要在 CheckpointAlgorithm 中实施 checkpointTimeout()方法?
  • 服务器配置级别有什么问题吗?这与应用程序级别设置的内容如何交互?

1 个答案:

答案 0 :(得分:6)

编辑2016-12-02:在为应用程序事务设置了超时值' 0'后,重新设置了默认行为的说明。)

概述

让我描述一下应用程序级选项以及它与服务器级超时的交互方式。

在WebSphere Liberty Java Batch的一个块步骤中,您可以设置应用程序级别超时,或将' 0' 的超时值设置为默认为服务器 - 等级超时。

此外,您还可以通过单独的服务器级设置为任何非零应用程序级超时值设置上限。

应用程序级别超时

块事务超时可以设置为:

在XML(静态)

在具有特殊步骤属性的JSL的步骤级别: javax.transaction.global.timeout (秒)

E.g。

<step id="MyStep"> 
   <properties> 
      <!-- In seconds -->
      <property name="javax.transaction.global.timeout" value="120"/>   

如果未在XML中明确定义,则默认为180(秒)。

在Java(动态)

如果您需要更多动态/程序控制,您可以实现自定义CheckpointAlgorithm并编写其checkpointTimeout()以返回您想要的任何内容(即使您真的想要,也会为每个块提供不同的值)。

服务器(JVM)级别超时

设置应用程序超时值的上限

您可以阻止应用程序设置过大的超时值。

在服务器配置(server.xml)中使用 propogatedOrBMTTranLifetimeTimeout

<transaction propogatedOrBMTTranLifetimeTimeout="90s"/>

这将作为任何非零应用程序超时值的上限,可以通过javax.transaction.global.timeout checkpointTimeout()方法

未设置应用程序超时时的默认超时

如果javax.transaction.global.timeout设置为&#39; 0&#39; ,或者 checkpointTimeout()方法返回&#39; 0&#39; ,您将从服务器获得默认超时。

此超时值默认为120秒。

要更改服务器配置(server.xml),请使用 totalTranLifetimeTimeout ,例如:

<transaction totalTranLifetimeTimeout="60s"/>

注意:

如上所述,如果javax.transaction.global.timeout未设置,则应用程序超时默认为180,因此 totalTranLifetimeTimeout 执行 NOT 发挥作用。

其他说明/参考

注意: WDT工具设计视图可以更轻松地使用和记住这些服务器配置属性值。

映射到WebSphere Application Server传统配置

这里的 propogatedOrBMTTranLifetimeTimeout 属性基本上映射到传统的最大事务超时,而 totalTranLifetimeTimeout 更明显地映射总事务传统的终身超时

this documentation中描述了一些很好的例子,这些例子在Liberty中仍然很重要。