Configure Spring batch to persist to a database
Q. Why do you have to persist Spring batch run information to a database?
A. If you write industrial strength large batch jobs, you need to store job runs to a database so that you can monitor the jobs, restart a job, etc.
Step 1: You need to create database tables. You can find the schema inside the spring-batch-core-xxx.jar as shown below.
The tables that gets created are
Step 2: You need to have the relevant dependency jar files in addition to the spring batch jars.
org.springframework.jdbc-3.0.0.RELEASE.jar
com.springsource.com.thoughtworks.xstream-1.3.0.jar
com.springsource.org.codehaus.jettison-1.0.0.jar
commons-dbcp-1.2.2.jar
Step 3: Configure your spring config file
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"> <bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean" p:dataSource-ref="dataSource_oracle" p:tablePrefix="BATCH_" /> <job-repository id="jobRepository" lob-handler="lobHandler" data-source="dataSource_oracle" transaction-manager="transactionManager" isolation-level-for-create="READ_COMMITTED" table-prefix="BATCH_" xmlns="http://www.springframework.org/schema/batch" /> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"> <property name="nativeJdbcExtractor"> <bean class="org.springframework.jdbc.support.nativejdbc.OracleJdbc4NativeJdbcExtractor" /> </property> </bean> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository" /> </bean> <bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor"> <property name="concurrencyLimit" value="3" /> </bean> </beans>
Search at the top for "Spring batch" or select the "Spring batch" tag cloud for more basic and advanced posts on spring batch.
Labels: spring batch
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home