问题:我想在WEB容器启动时就执行任务怎么办呢
Quartz:使用QuartzInitializerListener就可办到了
请注意它的优先级别比QuartzInitializerServlet要高
在web.xml中可配置的参数如下:
如:
- <context-param>
- <param-name>quartz:config-file</param-name>
- <param-value>/quartz.properties</param-value>
- </context-param>
以下二者参数可代表都是同一个意思
quartz:config-file 或者 config-file
quartz:shutdown-on-unload 或者 shutdown-on-unload
quartz:wait-on-shutdown
quartz:start-on-load 或者 start-scheduler-on-load
quartz:start-delay-seconds 或者 start-delay-seconds
quartz:servlet-context-factory-key 或者 servlet-context-factory-key
默认值为:org.quartz.impl.StdSchedulerFactory.KEY
quartz:scheduler-context-servlet-context-key 或者 scheduler-context-servlet-context-key
以上参数都是根据QuartzInitializerListener源码得来的
QuartzInitializerListener源码如下:
- package org.quartz.ee.servlet;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- import org.quartz.Scheduler;
- import org.quartz.impl.StdSchedulerFactory;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class QuartzInitializerListener implements ServletContextListener {
- public static final String QUARTZ_FACTORY_KEY = "org.quartz.impl.StdSchedulerFactory.KEY";
- private boolean performShutdown;
- private boolean waitOnShutdown;
- private Scheduler scheduler;
- private final Logger log;
- public QuartzInitializerListener() {
- this.performShutdown = true;
- this.waitOnShutdown = false;
- this.scheduler = null;
- this.log = LoggerFactory.getLogger(super.getClass());
- }
- public void contextInitialized(ServletContextEvent sce) {
- this.log
- .info("Quartz Initializer Servlet loaded, initializing Scheduler...");
- ServletContext servletContext = sce.getServletContext();
- try {
- String configFile = servletContext
- .getInitParameter("quartz:config-file");
- if (configFile == null)
- configFile = servletContext.getInitParameter("config-file");
- String shutdownPref = servletContext
- .getInitParameter("quartz:shutdown-on-unload");
- if (shutdownPref == null)
- shutdownPref = servletContext
- .getInitParameter("shutdown-on-unload");
- if (shutdownPref != null) {
- this.performShutdown = Boolean.valueOf(shutdownPref)
- .booleanValue();
- }
- String shutdownWaitPref = servletContext
- .getInitParameter("quartz:wait-on-shutdown");
- if (shutdownPref != null)
- this.waitOnShutdown = Boolean.valueOf(shutdownWaitPref)
- .booleanValue();
- StdSchedulerFactory factory;
- if (configFile != null)
- factory = new StdSchedulerFactory(configFile);
- else {
- factory = new StdSchedulerFactory();
- }
- this.scheduler = factory.getScheduler();
- String startOnLoad = servletContext
- .getInitParameter("quartz:start-on-load");
- if (startOnLoad == null) {
- startOnLoad = servletContext
- .getInitParameter("start-scheduler-on-load");
- }
- int startDelay = 0;
- String startDelayS = servletContext
- .getInitParameter("quartz:start-delay-seconds");
- if (startDelayS == null)
- startDelayS = servletContext
- .getInitParameter("start-delay-seconds");
- try {
- if ((startDelayS != null) && (startDelayS.trim().length() > 0))
- startDelay = Integer.parseInt(startDelayS);
- } catch (Exception e) {
- this.log
- .error("Cannot parse value of 'start-delay-seconds' to an integer: "
- + startDelayS + ", defaulting to 5 seconds.");
- startDelay = 5;
- }
- if ((startOnLoad == null)
- || (Boolean.valueOf(startOnLoad).booleanValue()))
- if (startDelay <= 0) {
- this.scheduler.start();
- this.log.info("Scheduler has been started...");
- } else {
- this.scheduler.startDelayed(startDelay);
- this.log.info("Scheduler will start in " + startDelay
- + " seconds.");
- }
- else {
- this.log
- .info("Scheduler has not been started. Use scheduler.start()");
- }
- String factoryKey = servletContext
- .getInitParameter("quartz:servlet-context-factory-key");
- if (factoryKey == null)
- factoryKey = servletContext
- .getInitParameter("servlet-context-factory-key");
- if (factoryKey == null) {
- factoryKey = "org.quartz.impl.StdSchedulerFactory.KEY";
- }
- this.log
- .info("Storing the Quartz Scheduler Factory in the servlet context at key: "
- + factoryKey);
- servletContext.setAttribute(factoryKey, factory);
- String servletCtxtKey = servletContext
- .getInitParameter("quartz:scheduler-context-servlet-context-key");
- if (servletCtxtKey == null)
- servletCtxtKey = servletContext
- .getInitParameter("scheduler-context-servlet-context-key");
- if (servletCtxtKey != null) {
- this.log
- .info("Storing the ServletContext in the scheduler context at key: "
- + servletCtxtKey);
- this.scheduler.getContext().put(servletCtxtKey, servletContext);
- }
- } catch (Exception e) {
- this.log.error("Quartz Scheduler failed to initialize: "
- + e.toString());
- e.printStackTrace();
- }
- }
- public void contextDestroyed(ServletContextEvent sce) {
- if (!this.performShutdown) {
- return;
- }
- try {
- if (this.scheduler != null)
- this.scheduler.shutdown(this.waitOnShutdown);
- } catch (Exception e) {
- this.log.error("Quartz Scheduler failed to shutdown cleanly: "
- + e.toString());
- e.printStackTrace();
- }
- this.log.info("Quartz Scheduler successful shutdown.");
- }
- }
相关推荐
quartz quartz-1.8.6 dbTables quartz动态任务调度需要的数据库脚本。
赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...
该压缩包内包含两个quartz的jar包, 分别是quartz-1.6.0.jar和quartz-all-1.6.0.jar
赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...
quartz-2.2.3版本的quartz初始化sql语句
quartz简单实例quartz简单实例quartz简单实例quartz简单实例
Autofac.Extras.Quartz, Quartz.Net的Autofac集成 Autofac.Extras.Quartz用于 Quartz.Net的Autofac集成包。Autofac.Extras.Quartz 为每个石英作业创建嵌套的litefime作用域。 完成作业执行后释放嵌套作用域。这允许...
网上能找到的Quartz Web管理的资料都是使用的一个国外人写的Quartz WebApp的东东,功能也很全面。但是作为自己的应用其实用不了那么多功能,一般我们只要可以定义一个job,指定一个Cron表达式完成工作即可,附带的...
quartz内部表.sql。
Quartz1.5,Quartz1.6,Quartz1.8。Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个...
postgres quatrz初始化sql脚本文件、pg、quartz、qrtz_开头的表 配置文件需求修改 #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore....
Quartz.NET框架的核心是调度器。调度器负责管理Quartz.NET应用运行时环境。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz.NET采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器...
Quartz原理及实例,spring4.x+Quartz.2.2.1结合的开发,静态和动态实例
lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子
关于spring中quartz的配置
深入解读Quartz的原理,定时任务框架是web开发过程中使用很多的框架之一
Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。 Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的...
详细介绍CronExpression表达式设定定时任务的规则
quartz自动调度的3种调度形式+传参 1.单纯的quartz调度 2.spring+quartz调度