0

以下是我们的应用程序如何配置Spring批处理。Spring spatch挂起事务(NOT_SUPPORTED)在websphere应用程序服务器上执行tasklet

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

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

交易未被暂停。 Spring使用ConnectionHolder缓存连接,如果连接处于事务中,则不会释放连接。我们不希望连接被缓存,我们希望从数据源(连接池)获得新的连接,而不是使用弹簧缓存的连接句柄。

<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"/> 

谢谢。

回答

0

真正处理这个问题的最好方法是使用一个单独的,特定于应用程序的数据源,该数据源与您当前所属的事务无关。这首先防止了使用中的连接成为交易的一部分。

相关问题