Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org.springframework.retry.ExhaustedRetryException: Retry exhausted after last attempt in recovery path, but exception is not skippable.; nested exception is org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [insert into employee(empid,city,country) values(?,?,?)]; Duplicate entry '1' for key 'PRIMARY'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
- at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor$5.recover(FaultTolerantChunkProcessor.java:403)
- at org.springframework.retry.support.RetryTemplate.handleRetryExhausted(RetryTemplate.java:458)
- at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:320)
- at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:193)
- at org.springframework.batch.core.step.item.BatchRetryTemplate.execute(BatchRetryTemplate.java:217)
- at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor.write(FaultTolerantChunkProcessor.java:420)
- at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:199)
- at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:75)
- at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:406)
- at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:330)
- at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
- at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:271)
- at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:81)
- at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)
- at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
- at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
- at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:257)
- at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:200)
- at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)
- at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)
- at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)
- at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:169)
- at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)
- at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:134)
- at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:306)
- at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135)
- at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
- at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128)
- at javabeat.net.Main.main(Main.java:21)
- Caused by: org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [insert into employee(empid,city,country) values(?,?,?)]; Duplicate entry '1' for key 'PRIMARY'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
- at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
- at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
- at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:645)
- at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:866)
- at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:927)
- at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:937)
- at javabeat.net.OrderItemWriter.write(OrderItemWriter.java:23)
- at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:175)
- at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:151)
- at org.springframework.batch.core.step.item.FaultTolerantChunkProcessor$3.doWithRetry(FaultTolerantChunkProcessor.java:328)
- at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:263)
- ... 26 more
- Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
- at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
- at com.mysql.jdbc.Util.getInstance(Util.java:383)
- at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1049)
- at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226)
- at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158)
- at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
- at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
- at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840)
- at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
- at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
- at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
- at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246)
- at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:873)
- at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:866)
- at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
- ... 34 more
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
- <!-- stored job-meta in database -->
- <bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="transactionManager" ref="transactionManager" />
- <property name="databaseType" value="mysql" />
- </bean>
- <bean id="transactionManager"
- class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
- <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
- <property name="jobRepository" ref="jobRepository" />
- </bean>
- </beans>
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
- <context:property-placeholder location="classpath:database.properties" />
- <!-- connect to database -->
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${jdbc.mysql.driverClassName}" />
- <property name="url" value="${jdbc.mysql.url}" />
- <property name="username" value="${jdbc.mysql.username}" />
- <property name="password" value="${jdbc.mysql.password}" />
- </bean>
- <bean id="transactionManager"
- class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
- <!-- create job-meta tables automatically In production you don't need to
- create this every time. Just create once in production. -->
- <jdbc:initialize-database data-source="dataSource">
- <jdbc:script location="org/springframework/batch/core/schema-drop-mysql.sql" />
- <jdbc:script location="org/springframework/batch/core/schema-mysql.sql" />
- </jdbc:initialize-database>
- </beans>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:batch="http://www.springframework.org/schema/batch"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/batch
- http://www.springframework.org/schema/batch/spring-batch-3.0.xsd">
- <import resource="datasource-config.xml" />
- <import resource="job-context.xml" />
- <!-- JOB -->
- <job id="employeeJob" xmlns="http://www.springframework.org/schema/batch">
- <step id="employeeprocessor">
- <tasklet>
- <chunk reader="reader" writer="writer" commit-interval="3" processor="employeeProcessor" skip-limit="1">
- <skippable-exception-classes>
- <include class="org.springframework.batch.item.file.FlatFileParseException" />
- </skippable-exception-classes>
- </chunk>
- </tasklet>
- </step>
- <!-- <batch:listeners>
- <batch:listener ref="jobListener" />
- </batch:listeners> -->
- </job>
- <!-- ============= ItemReader ================== -->
- <bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
- <property name="resource" value="classpath:input/employees.csv" />
- <property name="linesToSkip" value="1" />
- <property name="lineMapper">
- <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
- <property name="lineTokenizer">
- <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
- <property name="names" value="EMP_ID,CITY,COUNTRY" />
- <property name="delimiter" value="," />
- </bean>
- </property>
- <property name="fieldSetMapper">
- <bean class="javabeat.net.EmployeeFieldSetMapper" />
- </property>
- </bean>
- </property>
- </bean>
- <bean id="employeeProcessor" class="javabeat.net.EmployeeProcessor" />
- <!-- Optional JobExecutionListener to perform business logic before and after the job -->
- <bean id="jobListener" class="javabeat.net.EmployeeJobListener" />
- <bean id="writer" class="javabeat.net.OrderItemWriter">
- <constructor-arg ref="dataSource" />
- </bean>
- </beans>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement