
之前提到过项目中要添加一个定时任务,原有的timer定时器在遇到异常后终止,不能满足业务的需要。今天决定采用另一种定时器Quartz来做。具体过程如下:
创建业务处理类
public class MyTask {
-
private static final Log log = LogFactory.getLog(MyTask.class);
-
public void run() {
-
try {
-
String arr[] = null;
-
// 此处执行具体的操作
-
java.util.Date datelog = new java.util.Date();
-
log.info("listener开始调度,当前时间:" + datelog.toString());
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
-
String workdate = sdf.format(datelog).substring(8, 10);
-
int mm = Integer.valueOf(workdate);
-
String str = webSiSecurityInfoService.querySms(workdate);
-
if (!"".equals(str)) {
-
arr = new String[3];
-
arr[0] = WebServiceCommmons.getResponseHeaderXmlInfoByNode(
-
str, "FaultCode"); // 获取返回代码
-
arr[1] = WebServiceCommmons.getResponseHeaderXmlInfoByNode(
-
str, "FaultString"); // 获取错误信息
-
if (arr[0] == null || "".equals(arr[0])
-
|| !"01".equals(arr[0])) {// 失败抛出异常信息
-
System.out.println("短信发送失败,发送报文为:" + str + "@响应报文信息为:"
-
+ arr[0] + ":" + arr[1]);
-
log.error("短信发送失败,发送报文为:" + str + "@响应报文信息为:" + arr[0]
-
+ ":" + arr[1]);
-
} else {
-
System.out.println("短信发送成功");
-
}
-
}
-
} catch (Throwable a) {
-
}
-
}
-
}
配置在Spring配置文件中配置相关bean
-
<bean name="mytask" class="com.shunde.servlet.MyTask.java" />--业务处理类
-
<bean id="mytaskJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">--配置job
-
<property name="targetObject" ref="mytask"></property>--业务处理类的beanid
-
<property name="targetMethod" value="run"></property>--业务处理类中的方法
-
<property name="concurrent" value="false"></property>--是否并发,为否
-
</bean>
-
<bean id="mytaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">--触发器
-
<property name="jobDetail" ref="mytaskJob"/>--配置触发的job
-
<property name="cronExpression" value="0 0/20 8-18 * * ?"></property>--设置cron表达式 当前为每天8点到下午6点每隔20分钟触发一次
-
</bean>
-
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">--配置定时器调度bean
-
<property name="triggers">
-
<list>
-
<ref local="mytaskTrigger" />--配置要调度的触发器
-
</list>
-
</property>
-
</bean>
配置web.xml加载spring配置文件
-
<context-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>/WEB-INF/config/spring-common.xml</param-value>
-
</context-param>
以上配置完成之后,启动应用服务,定时器就启动了,并会按照设定的时间定时执行任务。
小编拙见,有不对之处,欢迎下方留言