在我的<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
<comp :links="$options.links">
<template slot-scope="link">
<a href="#">{{link.text}}</a>
</template>
</comp>
</div>
文件中,我有以下内容:
xml
使用值<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager"
p:defaultTimeout="60" />
<bean id="sharedTransactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<constructor-arg>
<ref bean="transactionManager" />
</constructor-arg>
<property name="isolationLevelName" value="${sharedTransactionTemplate.isolationlevel:ISOLATION_READ_UNCOMMITTED}"/>
<property name="timeout" value="60"/>
</bean>
,如果来自db的响应超过60秒,我的程序将达到超时。这是正确的,也是我的预期。
我发现WAS控制台中还有一些事务超时值设置:
60
内部交易服务页面,有一个值调用“总交易生命周期超时”。我将值设置为80。
在我的应用程序中,我有一个部分会触发Server --> WebSphere application servers --> my server
Under Container Settings --> click on Container Services --> Transaction service
在我的应用程序中运行spring批处理。在我的Spring批处理中,我有一些for循环,它在日志文件中写入一些数据,并且它与DB没有任何交互。
我发现,我的for循环在60秒后不会达到60秒的时间。它只会在80秒内完成。我相信这是因为它没有调用db。
我的代码如下:
Spring SimpleJobLauncher
我想根据xml中的代码或任何方式将此值编辑为例如70秒。我不想在WAS控制台中编辑它,因为我仍然希望其他方法仍然使用80秒。
有什么想法吗?
以下是我的春季批次:
我实际上想要做一些我可以在xml中编码的东西,这样这个spring批处理可以在xml中使用我自己的值集。所以我的第3步可以使用我自己的价值。
附加问题,以下类是否仅适用于涉及数据库连接的事务?
@Autowired
@Qualifier("sharedTransactionTemplate")
private TransactionTemplate transactionTemplate;
transactionTemplate.execute( new TransactionCallbackWithoutResult( ) {
// In here I trigger the spring batch
} );
答案 0 :(得分:0)
我不清楚您提供的信息,为什么要以交易方式执行Spring Batch作业,您可能需要考虑是否需要。虽然不重复,但这个问题类似于this one,您可以在其中看到一个可能的解决方案是为您的春季批处理作业启动UserTransaction,您可以控制超时。正如该答案和后续评论中所指出的,使用此方法存在一些限制和考虑因素。