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

Sco*_*urz 4 java websphere-liberty java-batch jsr352

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

Sco*_*urz 7

编辑2016-12-02: 对应用程序事务的超时值设置为“ 0”时的默认行为进行了重新解释)。

总览

让我描述应用程序级别的选项以及它们如何与服务器级别的超时交互。

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

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

应用程序级超时

可以设置块事务超时:

在XML中(静态)

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

例如

<step id="MyStep"> 
   <properties> 
      <!-- In seconds -->
      <property name="javax.transaction.global.timeout" value="120"/>   
Run Code Online (Sandbox Code Playgroud)

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

在Java中(动态)

如果您需要更多的动态/程序控制,则可以实现自定义CheckpointAlgorithm并编写其checkpointTimeout()以返回所需的值(即使您确实需要,每个块的值也不同)。

服务器(JVM)级超时

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

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

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

<transaction propogatedOrBMTTranLifetimeTimeout="90s"/>
Run Code Online (Sandbox Code Playgroud)

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

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

如果将javax.transaction.global.timeout设置为'0'checkpointTimeout()方法返回'0',则将从服务器获取默认超时。

此超时值默认为120秒。

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

<transaction totalTranLifetimeTimeout="60s"/>
Run Code Online (Sandbox Code Playgroud)

注意:

正如上面提到的,不过,如果javax.transaction.global.timeout不是在所有的应用程序超时默认设置为180,所以totalTranLifetimeTimeout确实发挥作用。

其他说明/参考

注:WDT工具的设计视图,使有工作,更容易记住这些服务器配置的属性值。

映射到WebSphere Application Server传统配置

这里传播OrBMTTranLifetimeTimeout属性基本上映射到传统的最大事务超时,而totalTranLifetimeTimeout更明显地映射传统的Total事务生存时间超时

本文档中描述了一些不错的示例,这些示例在Liberty中仍然非常重要。