Struts 2 + Spring 3 + Quartz 1.8 Scheduler示例

在本教程中,我们将向您展示如何集成Struts 2 + Spring 3 + Quartz 1.8.6

为什么不石英2?
当前,Spring 3仍不支持Quartz 2 API,请参阅此SPR-8581错误报告 。 修正了错误后,将再次更新本文。

使用的工具

  1. 春天3.1.5。发布
  2. 石英1.8.6
  3. Struts2.3.4
  4. Struts2-spring-plugin 2.3.4
  5. Maven 3
  6. Eclipse 4.2

1.项目文件夹

这是最终的项目文件夹结构。

2.依赖库

集成与该Spring 2.5.6 + Quartz 1.6相似,只是Spring3的依赖项有些混乱,请阅读下面的Maven pom.xml,了解开发本教程所需的所有依赖项。

请参阅XML注释,以了解为什么需要该jar。

档案:pom.xml

...
<dependencies>

  <!-- Struts 2 -->
  <dependency>
	<groupId>org.apache.struts</groupId>
	<artifactId>struts2-core</artifactId>
	<version>2.3.4</version>
  </dependency>

  <!-- Quartz framework -->
  <dependency>
	<groupId>org.quartz-scheduler</groupId>
	<artifactId>quartz</artifactId>
	<version>1.8.6</version>
  </dependency>

  <!-- Spring 3 dependencies -->
  <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<version>3.1.2.RELEASE</version>
  </dependency>

  <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>3.1.2.RELEASE</version>
  </dependency>

  <!-- QuartzJobBean in spring-context-support.jar -->
  <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context-support</artifactId>
	<version>3.1.2.RELEASE</version>
  </dependency>

  <!-- Struts 2 + Spring 3 need this jar, ContextLoaderListener -->
  <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-web</artifactId>
	<version>3.1.2.RELEASE</version>
  </dependency>

  <!-- Spring + Quartz need transaction -->
  <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-tx</artifactId>
	<version>3.1.2.RELEASE</version>
  </dependency>

  <!-- Struts 2 + Spring integration plugins -->
  <dependency>
	<groupId>org.apache.struts</groupId>
	<artifactId>struts2-spring-plugin</artifactId>
	<version>2.3.4</version>
  </dependency>

</dependencies>
  ...

3.Spring3 +石英

为了集成Spring3和Quartz,创建一个类扩展org.springframework.scheduling.quartz.QuartzJobBean ,并实现executeInternal()方法,就像在Quartz中创建调度程序作业一样。

文件:SchedulerJob.java

package com.mkyong.quartz;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
 
public class SchedulerJob extends QuartzJobBean
{
	 
	protected void executeInternal(JobExecutionContext context)
	throws JobExecutionException {
 
		System.out.println("Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2");
 
	}
}

File:applicationContext.xml –将整个Quartz的调度程序和Spring详细信息放在applicationContext.xml 。 有关详细信息,请参见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-3.0.xsd">

  <!-- Spring Quartz Scheduler job -->
  <bean name="schedulerJob" class="org.springframework.scheduling.quartz.JobDetailBean">
	<property name="jobClass" value="com.mkyong.quartz.SchedulerJob" />
  </bean>

  <!-- Cron Trigger, run every 10 seconds -->
  <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
	<property name="jobDetail" ref="schedulerJob" />
	<property name="cronExpression" value="0/10 * * * * ?" />
  </bean>

  <!-- DI -->
  <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.Struts2 +弹簧3

要集成Struts 2 + Spring ,只需将org.springframework.web.context.ContextLoaderListener侦听器类放在web.xml文件中。

注意
有关详细信息,请阅读此Struts 2 + Spring集成示例

档案:web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Struts 2 Web Application</display-name>

	<filter>
	  <filter-name>struts2</filter-name>
	  <filter-class>
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	  </filter-class>
	</filter>

	<filter-mapping>
	  <filter-name>struts2</filter-name>
	  <url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
	  <listener-class>
		org.springframework.web.context.ContextLoaderListener
	  </listener-class>
	</listener>

</web-app>

5.演示

完成后,启动Strut2时,它将调用Spring并运行定义的Quartz的作业。

Jul 24, 2012 4:49:07 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 24, 2012 4:49:07 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 24, 2012 4:49:07 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3430 ms
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2  //run this every 10 seconds.
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2

下载源代码

下载它– Struts2-Spring3-Quartz-Example.zip (20 KB)。

参考文献

  1. Struts 2 + Spring集成示例
  2. Struts 2 Spring插件文档
  3. QuartzJobBean JavaDoc
  4. Spring应该支持Quartz 2.0 CronTrigger接口
  5. Struts 2 + Spring 2.5.6 + Quartz集成示例

翻译自: https://mkyong.com/struts2/struts-2-spring-3-quartz-1-8-scheduler-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值