1、下载quartz的相应jar包

2、增加spring配置文件(applicationContext-quartz.xml)

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 需要定时执行的类 -->
<bean id="heartTask" class="com.tf.user.util.BoHeartTask">
<property name="heartHref" value="http://localhost:8080/ScientificMarketing/bo_heart.jsp"></property>
<property name="loginHref" value="http://localhost:8080/ScientificMarketing/user.do?action=bologin"></property>
</bean> <!-- 心跳任务-->
<bean id="taskJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="heartTask"></property>
<property name="targetMethod">
<value>doHeart</value>
</property>
</bean>
<!-- 登陆任务 -->
<bean id="loginJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="heartTask"></property>
<property name="targetMethod">
<value>doFirstLogin</value>
</property>
</bean> <!-- 每15分钟心跳一次-->
<bean id="runTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="taskJob" />
</property>
<property name="cronExpression">
<value>0 0/15 * * * ?</value>
</property>
</bean>
<!-- 服务器启动后延迟1秒发登陆请求 -->
<bean id="loginTime" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="loginJob" />
</property>
<property name="startDelay" value="1000" />
<property name="repeatInterval" value="0" />
<property name="repeatCount" value="0" />
</bean> <!-- 最终启动的配置 -->
<bean id="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="runTime" />
<ref bean="loginTime" />
</list>
</property>
</bean>
</beans>

其中配置任务的定时执行的有2个类可供选择:

org.springframework.scheduling.quartz.CronTriggerBean

org.springframework.scheduling.quartz.SimpleTriggerBean

CronTriggerBean类的主要属性:

jobDetail:目标执行job的bean
cronExpression:一个表达式,主要配置多久循环一次

SimpleTriggerBean的主要属性:

jobDetail:目标执行job的bean
startDelay:第一次执行的时间,延迟多久执行
repeatInterval:任务执行周期
repeatCount:执行次数

任务类BoHeartTask.java

package com.tf.user.util;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; public class BoHeartTask {
private static Log log = LogFactory.getLog(BoHeartTask.class); private String heartHref;
private String loginHref; public void setLoginHref(String loginHref) {
this.loginHref = loginHref;
} public void setHeartHref(String heartHref) {
this.heartHref = heartHref;
} public void doFirstLogin() throws IOException{
URL url = new URL(loginHref);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setReadTimeout(30000);
con.connect();
int state = con.getResponseCode();//网页状态码 String logStr = "----BO登陆连接,状态码:"+state+",时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println(logStr);
log.info(logStr);
} public void doHeart() throws IOException{
URL url = new URL(heartHref);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setReadTimeout(30000);
con.connect();
int state = con.getResponseCode();//网页状态码 String logStr = "----心跳链接BO,状态码:"+state+",时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println(logStr);
log.info(logStr);
}
}

cronExpression配置说明

字段   允许值   允许的特殊字符
   0-59    , - * /
   0-59    , - * /
小时    0-23    , - * /
日期    1-31    , - * ? / L W C
月份    1-12 或者 JAN-DEC    , - * /
星期    1-7 或者 SUN-SAT    , - * ? / L C #
年(可选)    留空, 1970-2099    , - * /
表达式   意义
"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:10和2: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触发
"0 15 10 ? * 6#3"    每月的第三个星期五上午10:15触发

星期的简写:

周一 MON 周二 TUE 周三 WED 周四 THU 周五FRI 周六 SAT 周日 SUN
特殊字符   意义
*    表示所有值;
?    表示未说明的值,即不关心它为何值;
-    表示一个指定的范围;
,    表示附加一个可能值;
/    符号前表示开始时间,符号后表示每次递增的值;
L("last")    ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。如果在day-of-week字段里和数字联合使用,它的意思就是 "这个月的最后一个星期几" – 例如: "6L" means "这个月的最后一个星期五". 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。
W("weekday")    只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第16 天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在day- of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。
#    只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。
C    指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天。

在MONTH和Day Of Week字段里对字母大小写不敏感

使用quartz进行容器启动时登陆接口服务器和接口服务器进行心跳连接的更多相关文章

  1. Spring在Web容器启动时执行初始化方法

    需求:在tomcat启动时开启一个定时任务. 想法:容器启动时执行方法,最容易想到的就是servlet中可以配置load-on-startup,设置一个正整数也就可以随容器一起启动. 问题:上面的方法 ...

  2. SpringMVC——Servlet容器启动时初始化SpringMVC应用的原理

    在 Servlet 3.0标准中含有一个 ServletContainerInitializer接口,所有实现了这个接口的类会在容器启动的时候得到一个通知,并且会调用其 onStartup()方法,这 ...

  3. 运行docker容器镜像2(指定容器启动时启动的脚本)

    docker中启动容器有以下两种情况. 第一种是通过 # docker run containerid 启动一个容器. 第二种是重新启动已经关闭的容器. # docker start containe ...

  4. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  5. spring 在web容器启动时执行初始化方法

    开发框架:spingMVC+myBatis 解决方案:给web容器添加一个Listener类,在容器启动的时候执行Listener的“初始化”方法,在这个初始化方法中执行查询数据库的所有操作,然后将数 ...

  6. docker 容器启动时设置环境变量source

    镜像启动时,自动执行的是~/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效. vi  ~/.bashrc ------------------- ...

  7. docker容器启动时执行脚本 run /bin/bash执行多条指令

    搜了很多资料发现并未解决,以下方法失败!求大神评论给出完美方案 1.首先需要编写需要启动的脚本,并将脚本放在 /etc/init.d/目录下 如:cs.sh 2.修改权限 3.chkconfig -- ...

  8. 项目中使用了个quartz包,启动时提示Quartz version update check failed

    <span style="font-family: Arial, Helvetica, sans-serif;">2015-09-13 00:12:02 Abstrac ...

  9. SpringMVC原理解析-Servlet容器启动时初始化SpringMVC应用的原理

随机推荐

  1. windows设置共享

    设置共享: 添加用户 点击添加 设置权限 然后别人就可以查看了. 查看共享: 删除共享:

  2. C#程序集系列09,程序集签名

    在"C#程序集系列08,设置程序集版本"中体验了为程序集设置版本,但对于程序集的安全性来说,还远远不够.本篇体验程序集的签名. □ 程序集的签名 →F盘as文件夹下有多个文件→在程 ...

  3. MVC路由之浅见

    1.定义路由.路由规则 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{re ...

  4. java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener

    一:如果出现下面的错误信息,如果你的项目是Maven结构的,那么一般都是你的项目的Maven Dependencies没有添加到项目的编译路径下: 信息: The APR based Apache T ...

  5. EJB实体Bean怎样和数据库中表关联?

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "- ...

  6. python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.sessi ...

  7. cocos2d-x动画加速与减速

    动画是游戏的必定要素之中的一个,在整个游戏过程中,又有着加速.减速动画的需求.以塔防为样例,布塔的时候希望可以将游戏减速,布好塔后,则希望能将游戏加速:当某个怪被冰冻后,移动速度减缓,而其它怪的移动速 ...

  8. Additive属性动画

    Additive属性动画 参考 http://ronnqvi.st/multiple-animations/ 效果 源码 https://github.com/YouXianMing/Animatio ...

  9. Android平台上优秀的开源项目

    软件名:gaeproxy 软件作用:Android手机配置GoAgent. 项目地址:https://github.com/madeye/gaeproxy.git 软件名:ProxyDroid 软件作 ...

  10. python 查看模块的存放位置

    执行 dlib.__file__ 输出 '/anaconda2/lib/python2.7/site-packages/dlib/__init__.pyc'