2014-05-20 55 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的父上下文中配置。您是使用示例應用程序來構建您的應用程序還是您採取了其他路徑? –