栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Quartz 2.2和Tomcat 7的简单示例

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Quartz 2.2和Tomcat 7的简单示例

内容

  • Eclipse项目
  • 与Maven
  • 少XML

Eclipse项目

如果您在Eclipse中使用典型项目,则最基本的示例的结构类似于:

C:.|+---src|   |   log4j.dtd|   |   log4j.xml|   |   quartz.properties|   |   quartz_data.xml|   ||   ---org|       ---paulvargas|---test|    ---quartz| TestJob.java|---WebContent    ---WEB-INF        |   web.xml        |        ---lib     jta-1.1.jar     log4j-1.2.17.jar     quartz-2.1.5.jar     slf4j-api-1.6.5.jar     slf4j-log4j12-1.6.5.jar

每个文件的代码如下:

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"    id="WebApp_ID" version="2.5">    <listener>        <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>    </listener></web-app>

quartz.properties

# ----------------------------- Threads --------------------------- ## How many jobs can run at the same time?org.quartz.threadPool.threadCount=5# ----------------------------- Plugins --------------------------- ## Class to load the configuration data for each job and trigger.# In this example, the data is in an XML file.org.quartz.plugin.jobInitializer.class=org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin

quartz_data.xml

<?xml version="1.0" encoding="UTF-8"?><job-scheduling-data    xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_2_0.xsd"    version="1.8">    <schedule>        <job> <name>TestJob</name> <job-class>org.paulvargas.test.quartz.TestJob</job-class>        </job>        <trigger> <cron>     <name>TestJob</name>     <job-name>TestJob</job-name>     <cron-expression>0 0/5 * 1/1 * ? *</cron-expression> </cron>        </trigger>    </schedule></job-scheduling-data>

该作业被执行每5分钟(参见式

0 0/5 * 1/1 * ? *
cron-expression
标记)。如果您想要另一个表达式,则可以使用
http://www.cronmaker.com/

TestJob.java

package org.paulvargas.test.quartz;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class TestJob implements Job {    @Override    public void execute(final JobExecutionContext ctx) throws JobExecutionException {        System.out.println("Executing Job");    }}

log4j.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd" ><log4j:configuration>    <appender name="STDOUT" >        <layout > <param name="ConversionPattern" value="%d %-5p (%c.java:%L).%M - %m%n"/>        </layout>    </appender>    <root>        <priority value="TRACE" />        <appender-ref ref="STDOUT"/>    </root></log4j:configuration>

与Maven

如果使用的是Maven,则同一项目的结构为:

C:.|   pom.xml|---src    ---main        +---java        |   ---org        |       ---paulvargas        |---test        |    ---quartz        | TestJob.java        |        +---resources        |       log4j.dtd        |       log4j.xml        |       quartz.properties        |       quartz_data.xml        |        ---webapp |   index.jsp | ---WEB-INF         web.xml

和文件

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>test</groupId>    <artifactId>BasicQuartz</artifactId>    <packaging>war</packaging>    <version>1.0-SNAPSHOT</version>    <name>BasicQuartz</name>    <url>http://maven.apache.org</url>    <dependencies>        <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope>        </dependency>        <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version>        </dependency>        <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version>        </dependency>        <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version>        </dependency>        <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.5</version>        </dependency>    </dependencies>    <build>        <plugins> <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-compiler-plugin</artifactId>     <version>2.0.2</version>     <configuration>         <source>1.5</source>         <target>1.5</target>     </configuration> </plugin>        </plugins>    </build></project>

少XML

*这需要Servet 3.0+(Tomcat 7 +,Glassfish 3 +,JBoss AS 7)

您只需要两个文件:

TestJob.java
上一个示例和以下侦听器:

import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.annotation.WebListener;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.ee.servlet.QuartzInitializerListener;import org.quartz.impl.StdSchedulerFactory;@WebListenerpublic class QuartzListener extends QuartzInitializerListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        super.contextInitialized(sce);        ServletContext ctx = sce.getServletContext();        StdSchedulerFactory factory = (StdSchedulerFactory) ctx.getAttribute(QUARTZ_FACTORY_KEY);        try { Scheduler scheduler = factory.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(TestJob.class).build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simple").withSchedule(         CronScheduleBuilder.cronSchedule("0 0/1 * 1/1 * ? *")).startNow().build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start();        } catch (Exception e) { ctx.log("There was an error scheduling the job.", e);        }    }}

为避免冲突,请勿同时设置默认侦听器

web.xml
。在最后一个示例中,默认线程数为10。由于调度程序以待机模式启动,因此有必要调用
scheduler.start();
。该
"simple"
标识是可选的,但你可以用它来重新安排工作(太棒了!)。例如:

ServletContext ctx = request.getServletContext();StdSchedulerFactory factory = (StdSchedulerFactory) ctx.getAttribute(QuartzListener.QUARTZ_FACTORY_KEY);Scheduler scheduler = factory.getScheduler();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simple").withSchedule(        CronScheduleBuilder.cronSchedule(newCronexpression)).startNow().build();Date date = scheduler.rescheduleJob(new TriggerKey("simple"), trigger);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号