相关步骤的工作配置如下:
我想在"myStep"中分析Jdbc 光标项阅读器的性能,但是在第一次提交后,第二个块的第一次读取将失败,java.sql.SQLException:结果集已经关闭.
我怀疑JTA/XA驱动程序可能由于某种原因关闭了光标,所以我给了"myStep"一个简单的数据源事务管理器(在读者使用的数据源上),并且该步骤能够成功完成.这不是解决方案,因为这会破坏步骤的事务完整性.
我是否应该能够在JTA托管步骤中使用光标阅读器(使用下面描述的环境)?如果是这样,我的结尾可能配置不正确?
环境
<bean id="myTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager"/>配置
<bean id="myTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/myDataSource"/>
<property name="proxyInterface" value="javax.sql.DataSource"/>
</bean>
<batch:step id="myStep" job-repository="myJobRepositoryFactory">
<batch:tasklet transaction-manager="myTransactionManager">
<batch:chunk
reader="myReader"
processor="myProcessor"
writer="myWriter"
commit-interval="100"
processor-transactional="false"/>
<batch:listeners>
<batch:listener ref="myListener"/>
</batch:listeners>
</batch:tasklet>
</batch:step>
<bean id="myReader" class="org.springframework.batch.item.database.JdbcCursorItemReader" scope="step">
<property name="dataSource" ref="myDataSource"/>
<property name="sql" value="SELECT * FROM myHugeTable ORDER BY myColumn …Run Code Online (Sandbox Code Playgroud)