2014-05-20 56 views
0

我有一个弹簧mvc webapp与弹簧批次内置到它。我有一些问题让我的春天批处理作业可以在春季批处理管理控制台中启动。这是我看到的时候我去工作网页...春季批量管理员显示作业不可启动

我的工作

enter image description here

全部都上来为可发射= FALSE。我想知道如何解决这个问题。我读了一些关于为什么会这样的文档,并且说我需要使用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>    

回答

2

有几件事情,这可能是:

  1. 哪里是你以上引用的XML文件在什么位置?它需要是WAR文件中的META-INF/spring/batch/jobs目录(这是Spring Batch Admin的外观)。
  2. 请勿在XML文件中配置公共组件。这包括jobLauncher,jobRepository,jobExplorer,jobLoaderjobRegistry。话虽如此,我没有看到在你的XML文件中定义的实际作业。 XML文件需要那些之一;)

你可以阅读更多有关添加自己的工作定义,以Spring Batch的联系:http://docs.spring.io/spring-batch-admin/reference/jobs.html#Add_your_Own_Jobs_For_Launching_in_the_UI

+0

所以你可以在我的配置中看到的工作没有在目录中定义你指定。他们在...... classpath *中:/ META-INF/spring/jobs/*。xml。我会尝试你现在指定的目录,看看它是否修复它。 – Richie

+0

好吧,现在我已经将批处理作业xml文件的位置更改为classpath *:/ META-INF/spring/batch/jobs/*。xml。但管理员仍然说他们不能启动。我不确定你的意思是不是通用组件?你能解释一下你的共同点吗? – Richie

+0

我提到的bean列表已在Spring Batch Admin的父上下文中配置。您是使用示例应用程序来构建您的应用程序还是您采取了其他路径? –