为什么石英不重新启动作业?
Why does quartz don't restart the jobs?
我在做一个web应用,使用Spring3.0.5.RELEASE+quartz 1.8.6,MySQL5.5用于存储调度信息。当我重新启动 tomcat 时,石英已重新启动,但它不会重新运行作业。比如我有一个job打印了10次"aaa",我在运行了3次后重启了tomcat,剩下的7次就不会打印了。
下面是 spring 配置文件,所有的作业和触发器都将由用户创建,所以只有一个 bean。
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false"></bean>
下面是quartz.properties。
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
# Configure Datasources
#============================================================================
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz1x?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =111111
org.quartz.dataSource.myDS.maxConnections = 10
Spring感染了Scheduler,下面是代码
JobDetail jobDetail = new JobDetail("jName","gName", NewJob.class);
SimpleTrigger simpleTrigger = new SimpleTrigger("jName1","gName1");
simpleTrigger.setStartTime(new Date());
simpleTrigger.setRepeatInterval(3000);
simpleTrigger.setRepeatCount(10);
scheduler.scheduleJob(jobDetail, simpleTrigger);
NewJob.java
public class NewJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(new Date());
}
}
如果我不用spring,而是用servlet(org.quartz.ee.servlet.QuartzInitializerServlet),就没有问题。
Spring不读取quartz.properties默认,你应该像下面这样在bean中写配置文件。
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
<property name="configLocation" value="classpath:quartz.properties" />
</bean>
我在做一个web应用,使用Spring3.0.5.RELEASE+quartz 1.8.6,MySQL5.5用于存储调度信息。当我重新启动 tomcat 时,石英已重新启动,但它不会重新运行作业。比如我有一个job打印了10次"aaa",我在运行了3次后重启了tomcat,剩下的7次就不会打印了。 下面是 spring 配置文件,所有的作业和触发器都将由用户创建,所以只有一个 bean。
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false"></bean>
下面是quartz.properties。
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
# Configure Datasources
#============================================================================
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz1x?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =111111
org.quartz.dataSource.myDS.maxConnections = 10
Spring感染了Scheduler,下面是代码
JobDetail jobDetail = new JobDetail("jName","gName", NewJob.class);
SimpleTrigger simpleTrigger = new SimpleTrigger("jName1","gName1");
simpleTrigger.setStartTime(new Date());
simpleTrigger.setRepeatInterval(3000);
simpleTrigger.setRepeatCount(10);
scheduler.scheduleJob(jobDetail, simpleTrigger);
NewJob.java
public class NewJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(new Date());
}
}
如果我不用spring,而是用servlet(org.quartz.ee.servlet.QuartzInitializerServlet),就没有问题。
Spring不读取quartz.properties默认,你应该像下面这样在bean中写配置文件。
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
<property name="configLocation" value="classpath:quartz.properties" />
</bean>