When a StoredProcedureItemReader fails due to a non existing connection, connection time out or similiar, the basic
Won't work, since the error is not a read error, but an initialization error:Code:<b:chunk reader="storedProcedureItemReader" writer="itemWriter" retry-limit="50"> <b:retryable-exception-classes> <b:include class="java.lang.Exception"/> </b:retryable-exception-classes> </b:chunk>
So, how do I retry this in case of connection issues?Code:DEBUG 04.05.2010 14:40:06: -- org.springframework.batch.core.repository.dao.JdbcStepExecutionDao - Truncating long message before update of StepExecution, original message is: org.springframework.batch.item.ItemStreamException: Failed to initialize the reader at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:139) at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:98) at org.springframework.batch.core.step.item.ChunkMonitor.open(ChunkMonitor.java:110) at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:98) at org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:288) at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:193) at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:115) at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:61) at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60) at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:144) at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:124) at org.springframework.batch.core.job.flow.support.state.SplitState$1.call(SplitState.java:83) at org.springframework.batch.core.job.flow.support.state.SplitState$1.call(SplitState.java:81) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.lang.Thread.run(Thread.java:619) Caused by: org.springframework.jdbc.UncategorizedSQLException: Executing query; uncategorized SQLException for SQL [PROCEDURE NAME: MYPROCEDURE]; SQL state [null]; error code [0]; Cannot create PoolableConnectionFactory (Io exception: The Network Adapter could not establish the connection); nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: The Network Adapter could not establish the connection) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.springframework.batch.item.database.AbstractCursorItemReader.initializeConnection(AbstractCursorItemReader.java:425) at org.springframework.batch.item.database.AbstractCursorItemReader.doOpen(AbstractCursorItemReader.java:400) at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:137) ... 15 more Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: The Network Adapter could not establish the connection) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) at org.springframework.batch.item.database.AbstractCursorItemReader.initializeConnection(AbstractCursorItemReader.java:420) ... 17 more Caused by: java.sql.SQLException: Io exception: The Network Adapter could not establish the connection at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334) at oracle.jdbc.ttc7.TTC7Protocol.handleIOException(TTC7Protocol.java:3668) at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:353) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:371) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:551) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:351) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1247) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1221) ... 19 more


Reply With Quote