在本教程中,我们将向您展示如何使用Apache Struts 1.x创建一个简单的Web应用程序项目,以及如何与Quartz Scheduler框架集成。 在项目启动期间,它将启动Quartz引擎并触发定义的调度程序任务。
总体思路很简单,您只需要创建一个Quartz Struts插件即可进行集成工作。
Struts <--> Quartz Struts Plug-in <--> Quartz
使用的工具 :
- Apache Struts 1.3.10
- 石英2.1.5
- Eclipse IDE
- 马文
注意
请访问此Quartz 2调度程序示例,以了解Quartz框架的基本用法。
1.依赖
通过Maven获取Struts和Quartz依赖项。
档案:pom.xml
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>servlet-api</artifactId>
<version>6.0.35</version>
</dependency>
<!-- Struts 1.3 framework -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-core</artifactId>
<version>1.3.10</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-taglib</artifactId>
<version>1.3.10</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-extras</artifactId>
<version>1.3.10</version>
</dependency>
<!-- Quartz framework -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.1.5</version>
</dependency>
2. Quartz Scheduler作业
创建一个Quartz作业以打印一条消息。
文件:SchedulerJob.java
package com.mkyong.common.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SchedulerJob implements Job
{
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("Print Print Struts 1.3 + Quartz 2.1.5 integration example ~");
}
}
3. Struts插件
创建一个简单的Struts插件并集成Quartz框架。 在此插件中,在Struts初始化期间,将调用init()
方法并每5秒启动Quartz Scheduler Job。
文件:QuartzPlugin.java
package com.mkyong.common.plugin;
import javax.servlet.ServletException;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import com.mkyong.common.quartz.SchedulerJob;
public class QuartzPlugin implements PlugIn {
@Override
public void destroy() {
// null
}
@Override
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
JobDetail job = JobBuilder.newJob(SchedulerJob.class)
.withIdentity("anyJobName", "group1").build();
try {
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("anyTriggerName", "group1")
.withSchedule(
CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
.build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
4.声明插件
将上面的Struts插件包含到Struts配置文件(struts-config.xml)中。
文件:struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<action-mappings>
<action path="/Welcome" type="org.apache.struts.actions.ForwardAction"
parameter="/pages/quartz_started.jsp" />
</action-mappings>
<plug-in className="com.mkyong.common.plugin.QuartzPlugin" />
</struts-config>
5.演示
在Struts启动期间,触发Quartz调度程序任务。
下载源代码
下载它– Struts-Quartz-2-Example.zip (24 KB)
参考文献
翻译自: https://mkyong.com/struts/struts-quartz-scheduler-integration-example/