我在Websphere应用服务器上遇到这个奇怪的问题,但我无法理解它来自何处。 如果我不解释,我很抱歉。 应用程序服务器配置为60秒的事务超时。 最近我们在spring中使用transactional注释的方法添加了超时
@Transactional(timeout=15)
从部署开始,看起来所有使用transactional注释的方法似乎都有15秒的事务超时。 我们已经检查过,事务中涉及的所有方法在注释中没有任何超时。
应用程序服务器是带有Spring Tx 4.2.5的Websphere 8.5.5.11。 我们没有尝试重启服务器,因为它正在生产中。 感谢您的耐心等待。
答案 0 :(得分:1)
我找到了解决方案。您必须明确设置默认超时,而不是自动使用Web服务器。
### TRANSACTION MANAGER ###
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" >
<property name="globalRollbackOnParticipationFailure" value="true" />
<property name="defaultTimeout" value="120" />
</bean>
<tx:annotation-driven transaction-manager="jtaTransactionManager" />
我不知道spring tx库是否存在问题以及与websphere事务管理器的交互是否存在问题。
更新30/03/2018
我们发现当前版本的spring-tx中存在一个错误,所有内容都通过将版本更改为4.3.12来解决,无论如何,如果您无法升级您的库,我之前发布的解决方案可用于旧版本。< / p>