Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行作业时,springBatch中的ItemReadListener未运行_Java_Spring_Spring Batch - Fatal编程技术网

Java 运行作业时,springBatch中的ItemReadListener未运行

Java 运行作业时,springBatch中的ItemReadListener未运行,java,spring,spring-batch,Java,Spring,Spring Batch,我正在学习SpringBatch抛出一个简单的示例,从数据库中读取数据并将其写入xml文件。作业运行正常,但我看不到我放在ItemReadListener中的消息。配置中是否遗漏了某些内容?谢谢你的帮助。我会把最相关的代码,如果需要我可以添加更多 job.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:

我正在学习SpringBatch抛出一个简单的示例,从数据库中读取数据并将其写入xml文件。作业运行正常,但我看不到我放在ItemReadListener中的消息。配置中是否遗漏了某些内容?谢谢你的帮助。我会把最相关的代码,如果需要我可以添加更多

job.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:batch="http://www.springframework.org/schema/batch" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc">




            <bean id="itemReader" class="org.springframework.batch.item.database.JdbcPagingItemReader" scope="step">
      <property name="dataSource" ref="dataSource"/>
      <property name="queryProvider">
        <bean class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
          <property name="dataSource" ref="dataSource"></property>
          <property name="selectClause" value="SELECT internal_Id,individual_Id "></property>
          <property name="fromClause" value="FROM Person"></property>
          <property name="whereClause" value="where internal_Id &lt; :idMax"></property>
          <property name="sortKey" value="internal_Id"></property>
        </bean>
      </property>

      <property name="parameterValues">
        <map>
          <entry key="idMax" value="#{jobParameters['idMax']}"></entry>
        </map>
      </property>
      <property name="pageSize" value="10"></property>
      <property name="rowMapper">
        <bean class="sb.dbToxml.PersonRowMapper"></bean>
      </property>

    </bean>

    <bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
       <property name="resource" value="file:xml/persons.xml"/>
       <property name="marshaller"  ref="personMarshaller"/>
       <property name="rootTagName" value="person"/>
    </bean>

    <bean id="personMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
       <property name="classesToBeBound">
          <value>sb.dbToxml.Person </value>
       </property>
    </bean>



     <batch:job id="personJob">
        <batch:step id="step1bb1" >
            <batch:tasklet transaction-manager="transactionManager">
                <batch:chunk reader="itemReader" writer="itemWriter"   commit-interval="10" />
            </batch:tasklet>
        </batch:step>

        <batch:listeners>
            <batch:listener ref="jobPersonListener" />
            <batch:listener ref="personReadListener"/>
        </batch:listeners> 
    </batch:job>



 </beans>

侦听器配置不正确

由此,

 <batch:job id="personJob">
    <batch:step id="step1bb1" >
        <batch:tasklet transaction-manager="transactionManager">
            <batch:chunk reader="itemReader" writer="itemWriter"   commit-interval="10" />
        </batch:tasklet>
    </batch:step>

    <batch:listeners>
        <batch:listener ref="jobPersonListener" />
        <batch:listener ref="personReadListener"/>
    </batch:listeners> 
</batch:job>
应改为

 <batch:job id="personJob">
    <batch:step id="step1bb1" >
        <batch:tasklet transaction-manager="transactionManager">
            <batch:chunk reader="itemReader" writer="itemWriter"   commit-interval="10" />
            <batch:listeners>
             <batch:listener ref="jobPersonListener" />
                 <batch:listener ref="personReadListener"/>
            </batch:listeners> 
        </batch:tasklet>
    </batch:step>
</batch:job>

ItemReadListener实现StepListener接口,而不是JobListener,因此它必须出现在步骤中。
 <batch:job id="personJob">
    <batch:step id="step1bb1" >
        <batch:tasklet transaction-manager="transactionManager">
            <batch:chunk reader="itemReader" writer="itemWriter"   commit-interval="10" />
        </batch:tasklet>
    </batch:step>

    <batch:listeners>
        <batch:listener ref="jobPersonListener" />
        <batch:listener ref="personReadListener"/>
    </batch:listeners> 
</batch:job>
 <batch:job id="personJob">
    <batch:step id="step1bb1" >
        <batch:tasklet transaction-manager="transactionManager">
            <batch:chunk reader="itemReader" writer="itemWriter"   commit-interval="10" />
            <batch:listeners>
             <batch:listener ref="jobPersonListener" />
                 <batch:listener ref="personReadListener"/>
            </batch:listeners> 
        </batch:tasklet>
    </batch:step>
</batch:job>