Spring Batch挂起事务(NOT_SUPPORTED),用于在websphere应用程序服务器上执行tasklet

时间:2015-11-03 13:44:07

标签: spring websphere spring-batch spring-transactions propagation

以下是我们为Spring批量配置应用程序的方法。

Spring批处理和Quartz相关表在单独的实例上配置。 应用程序特定的数据库实例不同 应用程序在WebSphere Application Server 8.0上运行

我们不希望将spring批处理事务传播到tasklet执行。为了达到这个目的,我们已经尝试过,但它似乎没有用。 有没有人遇到类似的问题?请建议如何继续。

交易未被暂停。 Spring使用ConnectionHolder缓存连接,如果它在事务下,则不释放连接。我们不希望缓存连接,我们希望从数据源(连接池)获得新连接,而不是使用spring缓存连接句柄。

<batch:job id="jobId" job-repository="jobRepository">
    <batch:step id="stepId">
        <batch:tasklet ref="taskletId">
            <batch:transaction-attributes propagation="NOT_SUPPORTED" />
        </batch:tasklet>
    </batch:step>
</batch:job>

<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>

感谢。

1 个答案:

答案 0 :(得分:0)

真正处理此问题的最佳方法是使用与您当前所属交易无关的单独的特定于应用程序的数据源。这样就可以防止使用中的连接成为交易的一部分。