编程语言
首页 > 编程语言> > java – 如何在WebSphere Liberty Batch中配置事务超时?

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

作者:互联网

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

解决方法:

(编辑2016-12-02:当为应用程序事务设置超时值’0’时,重新设置了对默认行为的解释).

概观

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

在WebSphere Liberty Java Batch的一个块步骤中,您可以设置应用程序级别超时,也可以将超时值“0”设置为默认为服务器级超时.

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

应用程序级超时

块事务超时可以设置为:

在XML(静态)

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

例如.

<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设置为’0’或者checkpointTimeout()方法返回’0’的情况,您将从服务器获得默认超时.

此超时值默认为120秒.

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

<transaction totalTranLifetimeTimeout="60s"/>

注意:

但是,如上所述,如果未设置javax.transaction.global.timeout,则应用程序超时默认为180,因此totalTranLifetimeTimeout不起作用.

其他说明/参考

注意:WDT工具的设计视图使得处理和记住这些服务器配置属性值变得更加容易.

映射到WebSphere Application Server传统配置

这里的propogatedOrBMTTranLifetimeTimeout属性基本上映射到传统的最大事务超时,而totalTranLifetimeTimeout更明显映射传统的总事务生存期超时.

this documentation中描述了一些很好的例子,这些例子在Liberty中仍然很大程度上相关.

标签:websphere-liberty,java,jsr352,java-batch
来源: https://codeday.me/bug/20190824/1704927.html