spring batch admin显示作业不可启动

时间:2014-05-20 00:02:18

标签: spring spring-mvc spring-batch

我有一个spring mvc webapp,里面装有spring批处理。我有一些问题让我的弹簧批处理作业可以在spring批处理管理控制台中启动。这是我去工作页面时看到的......

enter image description here

我的所有工作都是可启动的=假。我想知道如何解决这个问题。我阅读了一些文档,说明为什么会这样,并且它说我需要使用AutomaticJobRegistrar。

我尝试了这个,但它没有改变任何东西。我在下面放了我的弹簧批处理作业配置。很感激有人可以告诉我缺少什么。

感谢

<beans profile="pre,prod">

    <bean id="jobLauncher"
        class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository" />
    </bean> 

    <bean id="jobRepository"
        class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"
        parent="abstractCustDbJdbcDao">     
        <property name="transactionManager" ref="custDbTransactionManager" />
        <property name="databaseType" value="db2" />
        <property name="tablePrefix" value="REPMAN.BATCH_" />
    </bean>

    <bean id="jobExplorer"
            class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean" 
            parent="abstractCustDbJdbcDao" />                   

    <bean class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
        <property name="jobRegistry" ref="jobRegistry" />
    </bean>

    <bean id="jobLoader" class="org.springframework.batch.core.configuration.support.AutomaticJobRegistrar">
        <property name="applicationContextFactories">
            <bean class="org.springframework.batch.core.configuration.support.ClasspathXmlApplicationContextsFactoryBean">
                <property name="resources" value="classpath*:/META-INF/spring/jobs/*.xml" />
            </bean>
        </property>
        <property name="jobLoader">
            <bean class="org.springframework.batch.core.configuration.support.DefaultJobLoader">
                <property name="jobRegistry" ref="jobRegistry" />
            </bean>
        </property>
    </bean>

    <bean id="jobRegistry"
        class="org.springframework.batch.core.configuration.support.MapJobRegistry" />                          

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
           <list>
              <ref bean="dailyTranCountJobDetail" />
              <ref bean="bulletinBarMsgUpdateJobDetail" />
              <ref bean="updateLovCacheJobDetail" />
           </list>
        </property>
        <property name="triggers">
           <list>
              <ref bean="dailyTranCountCronTrigger" />
              <ref bean="bulletinBarMsgUpdateCronTrigger" />
              <ref bean="updateLovCacheCronTrigger" />
           </list>
        </property>
    </bean>

    <!-- scheduling properties -->
    <util:properties id="batchProps" location="classpath:batch.properties" />
    <context:property-placeholder properties-ref="batchProps" />        

    <!-- triggers -->
    <bean id="dailyTranCountCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="dailyTranCountJobDetail" />
        <property name="cronExpression" value="#{batchProps['cron.dailyTranCounts']}" />
    </bean>

    <bean id="bulletinBarMsgUpdateCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="bulletinBarMsgUpdateJobDetail" />
        <property name="cronExpression" value="#{batchProps['cron.bulletinBarUpdateMsg']}" />
    </bean>     

    <bean id="updateLovCacheCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="updateLovCacheJobDetail" />
        <property name="cronExpression" value="#{batchProps['cron.updateLovCache']}" />
    </bean>         

    <!-- job detail -->
    <bean id="dailyTranCountJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myer.reporting.batch.JobLauncherDetails" />
        <property name="group" value="quartz-batch" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="job-daily-tran-counts" />
                <entry key="jobLocator" value-ref="jobRegistry" />
                <entry key="jobLauncher" value-ref="jobLauncher" />
            </map>
        </property>
    </bean> 

    <bean id="bulletinBarMsgUpdateJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myer.reporting.batch.JobLauncherDetails" />
        <property name="group" value="quartz-batch" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="job-bulletin-bar-msg-update" />
                <entry key="jobLocator" value-ref="jobRegistry" />
                <entry key="jobLauncher" value-ref="jobLauncher" />
            </map>
        </property>
    </bean> 

    <bean id="updateLovCacheJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myer.reporting.batch.JobLauncherDetails" />
        <property name="group" value="quartz-batch" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="job-update-lov-cache" />
                <entry key="jobLocator" value-ref="jobRegistry" />
                <entry key="jobLauncher" value-ref="jobLauncher" />
            </map>
        </property>
    </bean>                 
</beans>            

1 个答案:

答案 0 :(得分:2)

这可能是一些事情:

  1. 您在上面引用的XML文件位于何处?它必须是WAR文件中的META-INF/spring/batch/jobs目录(这是Spring Batch Admin的外观)。
  2. 不要在XML文件中配置常用组件。其中包括jobLauncherjobRepositoryjobExplorerjobLoaderjobRegistry。话虽这么说,我没有看到你的XML文件中定义的实际工作。 XML文件需要其中一个;)
  3. 您可以阅读有关将自己的工作定义添加到Spring Batch Admin的更多信息:http://docs.spring.io/spring-batch-admin/reference/jobs.html#Add_your_Own_Jobs_For_Launching_in_the_UI