JSF 2 + Quartz 2示例

在本教程中,我们向您展示如何通过Quartz库中的QuartzInitializerListener侦听器类在JSF Web应用程序中运行Quartz作业。 该解决方案不仅适用于JSF 2,该概念几乎适用于所有标准Java Web应用程序。

使用的工具 :

  1. JSF 2.1.11
  2. 石英2.1.5
  3. Maven 3
  4. Eclipse 4.2
  5. 雄猫7

重用了先前的JSF 2.0 hello world示例 ,我们将通过QuartzInitializerListener侦听器类对其进行增强,以支持Quartz作业。

PS本教程仅专注于Quartz集成,对于JSF,请阅读上面的JSF hello world示例。

1.项目文件夹

查看最终项目目录结构。

project directory structure

2.依存关系

要在Tomcat上进行部署,您需要许多JSF依赖项。 阅读XML注释以获取详细信息。

档案:pom.xml

<dependencies>
...
                <!-- JSF 2 libraries -->
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
			<version>2.1.11</version>
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
			<version>2.1.11</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
		</dependency>

                <!-- Tomcat 6 need this -->
		<dependency>
			<groupId>com.sun.el</groupId>
			<artifactId>el-ri</artifactId>
			<version>1.0</version>
		</dependency>

		<!-- Quartz scheduler framework -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.1.5</version>
		</dependency>
		
		<!-- Quartz need transaction -->
		<dependency>
			<groupId>javax.transaction</groupId>
			<artifactId>jta</artifactId>
			<version>1.1</version>
		</dependency>
...

3.石英作业

创建一个Quartz作业类。 该课程将安排在以后运行。

文件:SchedulerJob.java

package com.mkyong.scheduler;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class SchedulerJob implements Job {

	@Override
	public void execute(JobExecutionContext context)
		throws JobExecutionException {
		
		System.out.println("JSF 2 + Quartz 2 example");

	}

}

4.石英配置

创建quartz.propertiesquartz-config.xml ,将其放在资源“文件夹”(Maven结构)中,对于非Maven项目,请确保可以将其放置在项目类路径中。

文件:quartz.properties –配置Quartz实例并从quartz-config.xml读取设置

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin 
org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml 
org.quartz.plugin.jobInitializer.failOnFileNotFound = true

文件:quartz-config.xml –配置触发器以运行com.mkyong.scheduler.SchedulerJob

<?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_1_8.xsd"
	version="1.8">

	<schedule>
		<job>
			<name>AJob</name>
			<group>AGroup</group>
			<description>Print a welcome message</description>
			<job-class>com.mkyong.scheduler.SchedulerJob</job-class>
		</job>

		<trigger>
			<cron>
				<name>dummyTriggerName</name>
				<job-name>AJob</job-name>
				<job-group>AGroup</job-group>
				<!-- It will run every 5 seconds -->
				<cron-expression>0/5 * * * * ?</cron-expression>
			</cron>
		</trigger>
	</schedule>
</job-scheduling-data>

注意
有关详细说明,请阅读此Quartz配置参考文章。

5.整合石英

这就是整合发生的地方。 在web.xml文件中将org.quartz.ee.servlet.QuartzInitializerListener声明为侦听器类。

档案:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>

	<listener>
		<listener-class>
			org.quartz.ee.servlet.QuartzInitializerListener
		</listener-class>
	</listener>

</web-app>

6.演示

在项目启动期间,Quartz会启动并每5秒运行一次计划的作业。

Jul 26, 2012 3:32:18 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 26, 2012 3:32:18 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 26, 2012 3:32:18 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3591 ms
JSF 2 + Quartz 2 example
JSF 2 + Quartz 2 example
JSF 2 + Quartz 2 example

下载源代码

下载它– JSF-Quartz-Example.zip (25 kb)

参考文献

  1. Quartz 2 Scheduler教程
  2. 石英配置参考
  3. JSF 2.0 Hello World示例
  4. XMLSchedulingDataProcessorPlugin JavaDoc
  5. 好的Quartz Scheduler作业示例

翻译自: https://mkyong.com/jsf2/jsf-2-quartz-2-example/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值