在本教程中,您将把Struts + Spring + Quartz框架集成在一起以执行调度程序任务。 Spring附带了现成的解决方案,可轻松集成Struts和Quartz。 关系如下:
Struts <--(Plug-In)--> Spring <--(Spring-Helper)--> Quartz <---> Scheduler task
使用的工具 :
- Struts1.3.10
- Spring2.5.6
- 石英1.6.3
1.计划任务
创建一个调度程序任务,并且printMessage()
是您要调度的方法。
文件:SchedulerTask.java
package com.mkyong.common.quartz;
public class SchedulerTask
{
public void printMessage() {
System.out.println("Struts + Spring + Quartz integration example ~");
}
}
2.计划工作
要将Spring与Quartz集成,请创建一个SchedulerJob,它扩展了Spring的QuartzJobBean
,而不是Quartz Job类。
文件:SchedulerJob.java
package com.mkyong.common.quartz;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class SchedulerJob extends QuartzJobBean
{
private SchedulerTask schedulerTask;
public void setSchedulerTask(SchedulerTask schedulerTask) {
this.schedulerTask = schedulerTask;
}
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
schedulerTask.printMessage();
}
}
3.春天的石英助手
Spring附带了许多Quartz帮助器类,以简化整个Quartz调度程序过程-Scheduler,Trigget,Job和JobDetails。
档案:spring-scheduler.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- Scheduler task -->
<bean name="schedulerTask" class="com.mkyong.common.quartz.SchedulerTask" />
<!-- Scheduler job -->
<bean name="schedulerJob"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass"
value="com.mkyong.common.quartz.SchedulerJob" />
<property name="jobDataAsMap">
<map>
<entry key="schedulerTask" value-ref="schedulerTask" />
</map>
</property>
</bean>
<!-- Cron Trigger -->
<bean id="cronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="schedulerJob" />
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<!-- Scheduler -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="schedulerJob" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
</beans>
4.Struts
要将Spring与Struts集成,您需要将Spring的ContextLoaderPlugIn
包含在Struts配置文件中。
文件: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>
<!-- Spring Struts plugin -->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/spring-scheduler.xml" />
</plug-in>
</struts-config>
5.工作原理
在Struts初始化期间,它将通过Spring的ContextLoaderPlugIn
Struts插件启动Spring Ioc容器。 在Spring初始化时,它将自动启动Quartz计划作业。
在此示例中,将每5秒执行一次printMessage()
方法。
下载源代码
参考文献
有关更多详细说明,您可以参考以下教程
翻译自: https://mkyong.com/struts/struts-spring-quartz-scheduler-integration-example/