Пример JSF 2 + Quartz 2
В этом руководстве мы покажем вам, как запустить задание Quartz во время веб-приложения JSF через класс слушателяQuartzInitializerListener
в библиотеке Quartz. Это решение не только работает с JSF 2, концепция применима практически ко всем стандартным веб-приложениям Java.
Используемые инструменты:
-
JSF 2.1.11
-
Кварц 2.1.5
-
Maven 3
-
Затмение 4.2
-
Tomcat 7
ПредыдущийJSF 2.0 hello
world example используется повторно, и мы улучшим его для поддержки задания Quartz через класс слушателяQuartzInitializerListener
.
P.S This tutorial is only focus on Quartz integration, for JSF, please read above JSF hello world example.
1. Папка проекта
Просмотрите окончательную структуру каталогов проекта.
2. зависимости
Для развертывания на Tomcat вам потребуется много зависимостей JSF. Прочтите комментарии XML для подробностей.
Файл: pom.xml
... com.sun.faces jsf-api 2.1.11 com.sun.faces jsf-impl 2.1.11 javax.servlet jstl 1.2 javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.1 com.sun.el el-ri 1.0 org.quartz-scheduler quartz 2.1.5 ... javax.transaction jta 1.1
3. Кварц Иов
Создайте класс работы Quartz. Этот класс планируется запустить и запустить позже.
Файл: SchedulerJob.java
package com.example.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.properties
иquartz-config.xml
, поместите их в «папку» ресурсов (структура Maven), для проекта, отличного от Maven, убедитесь, что его можно найти в пути к классам проекта.
File : 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
File : quartz-config.xml - настроить триггер для запускаcom.example.scheduler.SchedulerJob
AJob AGroup Print a welcome message com.example.scheduler.SchedulerJob dummyTriggerName AJob AGroup 0/5 * * * * ?
Note
Для подробного объяснения, пожалуйста, прочтите эту статьюQuartz
configuration reference.
5. Интегрировать кварц
Здесь произошла интеграция. Объявленorg.quartz.ee.servlet.QuartzInitializerListener
как класс слушателя в файлеweb.xml
.
Файл: web.xml
org.quartz.ee.servlet.QuartzInitializerListener
6. Demo
Во время запуска проекта 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 кб)