我必须配置spring batch才能在IBM Liberty AS中工作。 主要问题是事务的配置。我的一些配置。
内部Liberty server.xml文件:
<dataSource id="ectxDS"
jndiName="jdbc/ectxDS"
isolationLevel="TRANSACTION_SERIALIZABLE"
transactional="true">
<jdbcDriver libraryRef="OracleLib"/>
<properties.oracle URL="jdbc:oracle:thin:..."
password="..."
user="..."/>
</dataSource>
在Spring context.xml中
<!-- *** DATASOURCE *** -->
<jee:jndi-lookup id="dataSource"
jndi-name="jdbc/ectxDS"
expected-type="javax.sql.DataSource" />
<!-- *** JDBC TEMPLATE *** -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource" />
</bean>
<!-- *** TX MANAGER *** -->
<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
</bean>
在这种配置下,提交发生在调用JdbcTemplate类的方法(更新,查询...)的地方:我需要Spring Batch根据其默认值来管理事务,例如方法 execute Tasklet 的代码必须具有事务性!同时,我需要利用 org.springframework.transaction.jta.WebSphereUowTransactionManager 类上的分布式事务。
也许我遗漏了一些东西:我在Spring Batch上工作了很短的时间。
谢谢。