Java 弹簧批处理第二步工作不正常
我用两个步骤配置一个作业,两个步骤都需要读取不同的文件并将数据转储到数据库。当我启动作业时,它执行第一步并成功保存数据,第二步不读取文件。但在数据库中,我可以看到这两个步骤的状态都是成功的。我的配置如下所示:Java 弹簧批处理第二步工作不正常,java,spring,batch-processing,spring-batch,Java,Spring,Batch Processing,Spring Batch,我用两个步骤配置一个作业,两个步骤都需要读取不同的文件并将数据转储到数据库。当我启动作业时,它执行第一步并成功保存数据,第二步不读取文件。但在数据库中,我可以看到这两个步骤的状态都是成功的。我的配置如下所示: job id="job1" job-repository="jobRepository" xmlns="http://www.springframework.org/schema/batch" restartable="true"> <step id="step1"&g
job id="job1" job-repository="jobRepository" xmlns="http://www.springframework.org/schema/batch" restartable="true">
<step id="step1">
<tasklet transaction-manager="transactionManager" task-executor="taskExecutor">
<chunk reader="DomainItemReader" writer="DomainItemWriter" commit-interval="40" skip-limit="10">
<skippable-exception-classes>
<include class="java.lang.Exception"/>
<exclude class="java.io.FileNotFoundException"/>
</skippable-exception-classes>
<listeners>
<listener ref="MyListener"/>
</listeners>
</chunk>
</tasklet>
<next on="COMPLETED" to="step2"/>
</step>
<step id="step2" >
<tasklet transaction-manager="transactionManager" task-executor="taskExecutor" allow-start-if-complete="true">
<chunk reader="DomainItemReader2" writer="DomainItemWriter2" commit-interval="100" skip-limit="10">
<skippable-exception-classes>
<include class="java.lang.Exception"/>
<exclude class="java.io.FileNotFoundException"/>
</skippable-exception-classes>
<listeners>
<listener ref="MyListener2"/>
</listeners>
</chunk>
</tasklet>
</step>
</job>
job id=“job1”job repository=“jobRepository”xmlns=”http://www.springframework.org/schema/batch“restartable=“true”>
我的读者是这样的:
<bean id="billDomainItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="file:./firstfile.txt" />
<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="delimiter">
<util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.abc.DomainMapper">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
</bean>
</property>
</bean>
<bean id="DomainItemReader2" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="file:./secondFile.txt" />
<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="PRODUCT_ID,NAME,DESCRIPTION,PRICE" />-->
<property name="delimiter">
<util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.abc.DomainMapper2">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
</bean>
</property>
</bean>
我的第二步的读取器是这样的:
<bean id="billDomainItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource" value="file:./firstfile.txt" />
<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="delimiter">
<util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.abc.DomainMapper">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
</bean>
</property>
</bean>
<bean id="DomainItemReader2" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="file:./secondFile.txt" />
<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="PRODUCT_ID,NAME,DESCRIPTION,PRICE" />-->
<property name="delimiter">
<util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
</property>
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.abc.DomainMapper2">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
</bean>
</property>
</bean>
请任何人告诉我我哪里做错了,为什么不处理我的第二步文件。
感谢您的第二个读卡器配置
<property name="fieldSetMapper">
<bean class="com.DomainMapper2">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
检查bean类映射
在第二个读卡器配置中,这个bean是在同一个包中还是在不同的包中
<property name="fieldSetMapper">
<bean class="com.DomainMapper2">
<property name="accessJobParam" ref="accessJobParam"/>
</bean>
</property>
检查bean类映射
这个bean是在同一个包中还是在不同的包中
allow-start-if-complete="true"`
从我的第二步开始
parent="step1"
在我的第二步中,它对我来说很好 我删除了
allow-start-if-complete="true"`
从我的第二步开始
parent="step1"
在我的第二步中,它对我来说很好 嗨,普拉迪普,谢谢你的回复。两个读卡器在同一个包中。com.abc.DomainMapper2和com.abc.DomainMapper1Hi Pradeep,感谢您的回复。两个读卡器在同一个包中。com.abc.DomainMapper2和com.abc.DomainMapper1