- 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)中,使用propgatedOrBMTTranLifetimeTimeout:
<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传统配置
这里的proposedOrBMTTranLifetimeTimeout属性基本上映射到传统中的最大事务超时,而totalTranLifetimeTimeout映射更明显的是传统中的总事务生存期超时。
本文档中描述了一些不错的例子,这些例子在Liberty中仍然有很大的相关性。