使用不同的数据源为Itemreader和ItemWriter配置Spring Batch tasklet - 连接重置错误

时间:2016-09-14 18:59:51

标签: java spring

这是我的配置:

<batch:job id="myLoadJob">      
    <batch:step id="myLoadStep">            
      <batch:tasklet>
          <batch:chunk reader="myItemReader"
          writer="myItemWriter" commit-interval="1000">
      </batch:chunk>
      </batch:tasklet>      
    </batch:step>
</batch:job>

问题是在一些提交之后,ItemReader的数据源连接被重置。

我正在探索的解决方案是让XA知道数据源。从Spring文档中我了解到Spring的默认PlatformTransactionManager将把事务处理为全局。但是在阅读了这篇https://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/之后我很困惑,因为它说我必须使用这个注释:

tx:annotation-driven transaction-manager =“platformTransactionManagerReference”

并将该方法注释为Transactional - 示例:     @Transactional     public void work(){         //如果事务将被回滚         //方法抛出异常,否则提交     }

我正在寻找一些清晰度。

谢谢 @Kayaman - 希望以下澄清帮助

确切的事件如下:读者完成阅读并填充对象作者开始分批编写。在一定数量的写入之后抛出异常: 引起:com.microsoft.sqlserver.jdbc.SQLServerException:连接重置

此连接属于Reader的连接。希望这澄清一下。另一篇文章Using 2 different datasources : Spring batch描述了一个类似的问题。答案推荐使用XA感知数据源的分布式事务

0 个答案:

没有答案