Quartz集成springMVC 的方案一

9 篇文章 0 订阅

Quartz是一个开放源码项目,专注于任务调度器。

springMVC 具体的搭建框架就不具体说明,接下来直接描述把Quartz集成到springMVC 框架中。

步骤:

 1.引入所需要的jar

quartz-2.2.1.jar

quartz-jobs-2.2.1.jar

 2.新建要定时做的事情的具体实现类和方法,这边可以实现多个类和方法,只要applicationContext-quartz.xml文件中配置任务几个并对应的实现类和方法。

public class DataButtServiceImpl  {   
  
public void run() {  
      //定时要做的事情的具体实现  
    }  
}  
2.新建一个 applicationContext-quartz.xml 文件放在跟 springMVC  的配置文件同级目录就可以了, spring-quartz.xml 可以配置多个任务,列如 quartzJobA quartzJob B,并配置对应的方法和时间表达式(什么时间执行)

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  
<beans>  
    <!-- 要调用的工作类 -->  
    <bean id="quartzJobA" class="cn.handle.data.impl.DataButtServiceImpl"/>  
    <!-- 定义调用对象和调用对象的方法A -->  
    <bean id="jobtaskA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <!-- 调用的类 -->  
        <property name="targetObject">  
            <ref bean="quartzJobA"/>  
        </property>  
        <!-- 调用类中的方法 -->  
        <property name="targetMethod">  
            <value>run</value>  
        </property>  
    </bean>  
      
    <!-- 要调用的工作类   
    <bean id="quartzJobB" class="cn.EventProviderServiceImpl"/>-->  
    <!-- 定义调用对象和调用对象的方法B   
    <bean id="jobtaskB" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject">  
            <ref bean="quartzJobB"/>  
        </property>  
        <property name="targetMethod">  
            <value>run</value>  
        </property>  
    </bean>-->  
      
    <!-- 定义触发时间A -->  
    <bean id="doTimeA" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <property name="jobDetail">  
            <ref bean="jobtaskA"/>  
        </property>  
        <property name="cronExpression">  
            <value>0 0/1 * * * ?</value>  
        </property>  
    </bean>  
      
    <!-- 定义触发时间B   
    <bean id="doTimeB" class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <property name="jobDetail">  
            <ref bean="jobtaskB"/>  
        </property>  
        <property name="cronExpression">  
            <value>0 * * * * ?</value>  
        </property>  
    </bean>-->  
  
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->  
    <bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <ref bean="doTimeA"/>  
                <!-- <ref bean="doTimeB"/> -->  
            </list>  
        </property>  
    </bean>  
</beans>  

cronExpression值有几种如下:

"0 0 12 * * ?" 每天中午12点触发 

"0 15 10 ? * *" 每天上午10:15触发 

"0 15 10 * * ?" 每天上午10:15触发 

"0 15 10 * * ? *" 每天上午10:15触发 

"0 15 10 * * ? 2005" 2005年的每天上午10:15触发 

"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:102:44触发 

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 

"0 15 10 15 * ?" 每月15日上午10:15触发 

"0 15 10 L * ?" 每月最后一日的上午10:15触发 

"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 

2.web.xml中描述启动时要读applicationContext-quartz.xml这个文件并解析

<span style="color:#555555;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 version="2.5">
	<display-name>pppsd</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<!-- 加载spring容器 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value></span><span style="color:#ff0000;">classpath:spring/applicationContext-*.xml</span><span style="color:#555555;">,classpath:webservice/webservice.xml,classpath:activemq/activemq.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- PPP系统启动监听器 -->
	<listener>
		<listener-class>com.tjhq.ppp.common.ContextLoaderListener</listener-class>
  	</listener>
	<!-- 解决post乱码 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- 引用压缩文件 -->
	<filter>
		<filter-name>GzipFileFilter</filter-name>
		<filter-class>com.tjhq.commons.filter.GzipFilter</filter-class>
		<init-param>
			<param-name>headers</param-name>
			<param-value>Content-Encoding=gzip</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>GzipFileFilter</filter-name>
		<url-pattern>*.gzjs</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>GzipFileFilter</filter-name>
		<url-pattern>*.gzcss</url-pattern>
	</filter-mapping>
	
	<!-- springmvc的前端控制器 -->
	<servlet>
		<servlet-name>pppweb</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring/springmvc.xml,classpath:com/hq/bpmn/spring-hq-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>pppweb</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
	<!-- 配置验证码插件servlet类 -->
	<servlet>
	   <servlet-name>kaptcha</servlet-name>
	   <servlet-class>
	 		com.google.code.kaptcha.servlet.KaptchaServlet
	 	</servlet-class>
	 </servlet>
	 
	 <!-- 验证码请求名  映射 -->
	 <servlet-mapping>
	   <servlet-name>kaptcha</servlet-name>
	   <url-pattern>/kaptcha.jpg</url-pattern>
	 </servlet-mapping>
	 
	 <servlet>
	    <display-name>CXF Servlet</display-name>
	    <servlet-name>CXFServlet</servlet-name>
	    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	    <load-on-startup>1</load-on-startup>
	 </servlet>
	
	 <servlet-mapping>
	    <servlet-name>CXFServlet</servlet-name>
	    <url-pattern>/webservice/*</url-pattern>
	 </servlet-mapping>
	
	<!-- 
	<jsp-config>
		<jsp-property-group>
			<url-pattern>*.jsp</url-pattern>
			<el-ignored>false</el-ignored>
			<page-encoding>UTF-8</page-encoding>
			<scripting-invalid>false</scripting-invalid>
			<include-prelude>/WEB-INF/views/includes/JspHeader.jspf</include-prelude>
			<include-coda>/WEB-INF/views/includes/JspFooter.jspf</include-coda>
		</jsp-property-group>
	</jsp-config>
	 -->
</web-app></span>

以上配置即可实现简单的spring+quartz定时任务的集成。

参考地址:http://blog.csdn.net/congcong68/article/details/39252897



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值