2015-02-10 118 views
0

我正在使用石英调度程序来安排弹簧批处理作业。 应用程序无任何例外地启动,但它从不触发任何工作。Quartz cron作业未启动

让我来解释我的方案:

如果我通过使用MapJobRepositoryFactoryBean它完美,而是一种主要方法运行作业(含调度器)带弹簧的MVC Web应用程序的调度整合后,给出了一些版本更新错误,之后我使用了“JobRepositoryFactoryBean”,它使用数据库来存储作业状态。

因此,我添加了JobRepositoryFactoryBean豆和其他DB的变化,但它从来没有触发这项工作。

波纹管是日志的片断

2015-02-10 19:14:45 INFO context.support.XmlWebApplicationContext - Bean 'jobRegistry' of type [class org.springframework.batch.core.configuration.support.MapJobRegistry] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 
2015-02-10 19:14:45 INFO jdbc.datasource.DriverManagerDataSource - Loaded JDBC driver: com.mysql.jdbc.Driver 
2015-02-10 19:14:45 INFO launch.support.SimpleJobLauncher - No TaskExecutor has been set, defaulting to synchronous executor. 
2015-02-10 19:14:46 INFO context.support.DefaultLifecycleProcessor - Starting beans in phase 2147483647 
2015-02-10 19:14:46 INFO scheduling.quartz.SchedulerFactoryBean - Starting Quartz Scheduler now 
2015-02-10 19:14:46 INFO web.servlet.DispatcherServlet - FrameworkServlet 'mvc-dispatcher': initialization completed in 2155 ms 

这是我的工作配置

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

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

    <bean id="jobRepository" 
     class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean" 
     p:dataSource-ref="dataSource" p:transactionManager-ref="transactionManager"> 
     <property name="databaseType" value="reconConfig!{batch.databaseType}" /> 
     <property name="isolationLevelForCreate" value="ISOLATION_DEFAULT" /> 
    </bean> 

    <bean id="mapJobRepository" 
     class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean" 
     lazy-init="true" autowire-candidate="false" /> 

    <bean id="jobOperator" 
     class="org.springframework.batch.core.launch.support.SimpleJobOperator" 
     p:jobLauncher-ref="jobLauncher" p:jobExplorer-ref="jobExplorer" 
     p:jobRepository-ref="jobRepository" p:jobRegistry-ref="jobRegistry" /> 

    <bean id="jobExplorer" 
     class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean" 
     p:dataSource-ref="dataSource" /> 

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

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
     <property name="dataSource" ref="appDataSource" /> 
    </bean> 


    <bean class="org.springframework.batch.core.scope.StepScope" /> 



    <bean id="reconConfigPlaceholderProperties" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreUnresolvablePlaceholders" value="true" /> 
     <property name="location" value="classpath:batchDb.properties" /> 
     <property name="placeholderPrefix" value="reconConfig!{" /> 
     <property name="placeholderSuffix" value="}" /> 
    </bean> 
</beans> 

它已成功运行,但经过一番更多的发展它停止工作。我无法弄清楚在导致这种情况的配置中究竟发生了什么变化。

任何人都可以请使用“JobRepositoryFactoryBean”建议检查点,如果我失踪或问题是其他地方。

+0

灿你请提供你的弹簧配置用于与Cron的调度? – 2015-02-10 14:01:50

回答

0

如果这是作业调度整个配置,我相信你是完全缺少的Cron安排部...

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
<property name="triggers"> 
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="jobDetail" /> 
    <property name="cronExpression" value="*/10 * * * * ?" /> 
</bean> 
</property> 
</bean> 

请通过弹簧doc和石英调度部读here.

+0

请参阅我修改的问题。我有不同的xmls(包括cron)中的所有部分,并且它与MapJobRepositoryFactoryBean完美协作。 可能是问题出在作业存储库和其他东西。 – Maverick 2015-02-10 15:01:23

+0

您能否提供您的调度映射从不同的xmls?我相信你没有得到任何异常,所有的工作元数据表都在表格中正确创建。 – 2015-02-10 15:21:25