繁体   English   中英

Spring Batch暂停事务(NOT_SUPPORTED)以在Websphere应用程序服务器上执行Tasklet

[英]Spring Batch suspend transaction (NOT_SUPPORTED) for tasklet execution on websphere application server

这是为Spring批处理配置我们的应用程序的方式。

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

我们不希望将Spring Batch事务传播到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"/>

谢谢。

确实,解决此问题的最佳方法是使用单独的,特定于应用程序的数据源,该数据源与您当前所参与的事务无关。 首先,这避免了使用中的连接成为事务的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM