Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英cron作业未启动_Java_Spring Mvc_Cron_Quartz Scheduler_Spring Batch - Fatal编程技术网

Java 石英cron作业未启动

Java 石英cron作业未启动,java,spring-mvc,cron,quartz-scheduler,spring-batch,Java,Spring Mvc,Cron,Quartz Scheduler,Spring Batch,我正在使用quartz调度程序来调度spring批处理作业。 应用程序毫无例外地启动,但它从不触发任何作业 让我来解释一下我的情况: 如果我使用MapJobRepositoryFactoryBean通过一个主方法运行作业(与调度器一起),它工作得很好,但是在调度器与SpringMVCWebApp集成之后,它显示了一些版本更新错误,之后我使用了“JobRepositoryFactoryBean”,它使用数据库存储作业状态 因此,我添加了JobRepositoryFactoryBeanbean和其他

我正在使用quartz调度程序来调度spring批处理作业。 应用程序毫无例外地启动,但它从不触发任何作业

让我来解释一下我的情况:

如果我使用
MapJobRepositoryFactoryBean
通过一个主方法运行作业(与调度器一起),它工作得很好,但是在调度器与SpringMVCWebApp集成之后,它显示了一些版本更新错误,之后我使用了“JobRepositoryFactoryBean”,它使用数据库存储作业状态

因此,我添加了
JobRepositoryFactoryBean
bean和其他
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”时的检查点。

如果这是作业调度的整个配置,我相信您完全缺少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>


请通读spring文档和quartz调度部分

我们遇到了类似或相同的问题。查看数据库存储库。存储库不抵抗应用服务器的不同实例(例如,测试和开发环境)。这意味着,当两个或多个应用程序连接到同一个数据库时,可能会出现问题。应用程序开始增加时间和工作。一个应用程序中未注册的作业将作为错误进行签名并被阻止,反之亦然。 在这种情况下,两个表很重要。 选择XXX_计划程序_状态。有多排吗?这样就不会有冲突。(你不能区分你的应用服务器吗?如果是,你连接到了另一个数据库,比你想象的要多。这通常是一个很小的问题。)

选择XXX\u触发器。触发器\u状态是否有错误?如果是,请尝试从任何SQL工具进行更改:

update TRIGGERS set TRIGGER_STATE = 'WATING' where TRIGGER_STATE = 'ERROR';

重新启动应用程序服务器。如果运气好,失败的触发器将启动,并在重新启动后工作。如果没有,请尝试关闭concurrent App Server或更改存储库。

能否提供用于使用Cron进行调度的spring配置?请参阅我修改的问题。我在不同的xmls(包括cron)中拥有所有部分,并且它与MapJobRepositoryFactoryBean完美配合。可能是作业存储库和其他内容中存在问题。能否从不同的XML提供计划程序映射?我相信你们并没有得到任何异常,你们所有的工作元数据表都是在表中正确创建的。