我们有10-15个diff spring批处理作业,对于每个作业,我们都有一些常见的监听器,如电子邮件通知程序,作业持续时间监听器等。为此,我添加了父作业配置和一些常见的监听器,并将它们打包为一个lib。 / p>
现在在我们的主要具体工作中,我通过在子工作环境中扩展它来使用这个父工作。像这样的东西,其中“parentJob”在另一个公共lib中定义,该lib有一个作业监听器注册到它。
现在,当我运行我的子作业时,它没有执行在父作业中注册的作业监听器。什么可能是isssue?
父作业定义
<batch:job id="parentJob" abstract="true">
<batch:listeners>
<batch:listener ref="jobDurationListener"/>
</batch:listeners>
</batch:job>
儿童工作
<batch:job id="job1" parent="parentJob">
<batch:step id="step1" >
<batch:tasklet transaction-manager="transactionManager" start-limit="100" >
<batch:chunk reader="reader" writer="writer" commit-interval="1" />
</batch:tasklet>
</batch:step>
<batch:listeners>
<batch:listener ref="testListener"/>
</batch:listeners>
</batch:job>
答案 0 :(得分:1)
对不起这个问题。我应该阅读文档。添加merge =&#34; true&#34;在子作业监听器定义中它解决了问题