Spring+Quartz实现定时任务
MessageMgr.java
package com.uyao.bid.common.message; import com.pominfo.framework.exception.PomInfoException; public interface MessageMgr {
/**
* 发送短消息
* @param message
* @return
* @throws PomInfoException
*/
public String sendMessage(Message message ) throws PomInfoException;
}
MessageMgrImpl.java
package com.uyao.bid.common.message; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder; import com.uyao.bid.common.constant.SysCodeConstant; public class MessageMgrImpl implements MessageMgr {
/**
* 发送短消息
*/
public String sendMessage(Message message) {
String result="";
try {
StringBuffer sb = new StringBuffer(SysCodeConstant.SEND_MESSAGE_URL);
sb.append("username=").append(message.getUserName());
sb.append("&password=").append(message.getPassWord());
sb.append("&receiver=").append(message.getReceiver());
sb.append("&content="+URLEncoder.encode(message.getContent())); URL url = new URL(sb.toString());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(message.getRequestMethod());
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputline = in.readLine();
result =inputline;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
MessageAction.java
package com.uyao.bid.common.message; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import com.pominfo.framework.struts.PomInfoAction;
import com.uyao.bid.common.constant.SysCodeConstant;
import com.uyao.bid.common.util.StringUtil;
import com.uyao.bid.jk.biz.RemindDetailDrugMgr;
import com.uyao.bid.jk.biz.RemindDetailMgr;
import com.uyao.bid.jk.model.RemindDetail;
import com.uyao.bid.jk.model.RemindDetailDrug; public class MessageAction extends PomInfoAction {
private RemindDetailMgr remindDetailMgr;
private RemindDetailDrugMgr remindDetailDrugMgr;
public RemindDetailDrugMgr getRemindDetailDrugMgr() {
return remindDetailDrugMgr;
}
public void setRemindDetailDrugMgr(RemindDetailDrugMgr remindDetailDrugMgr) {
this.remindDetailDrugMgr = remindDetailDrugMgr;
}
public RemindDetailMgr getRemindDetailMgr() {
return remindDetailMgr;
}
public void setRemindDetailMgr(RemindDetailMgr remindDetailMgr) {
this.remindDetailMgr = remindDetailMgr;
} /**
* 用药提醒自动短信发送
* @return
*/
public void sendRemindMessage(){
try {
MessageMgr messageMgr = new MessageMgrImpl();
List<RemindDetail> remindDetails =new ArrayList<RemindDetail>();
remindDetails = remindDetailMgr.getRemindDetailMessage(null);
for(RemindDetail rd:remindDetails){
if(rd.getRemind().getPhoneNum()!=null && !rd.getRemind().getPhoneNum().isEmpty()){
String content =SysCodeConstant.MessageModel.REMIND_CONTENT_TEMPLATES;//消息内容模板
List<RemindDetailDrug> remindDetailDrugs =new ArrayList<RemindDetailDrug>();
RemindDetailDrug remindDetailDrug =new RemindDetailDrug();
remindDetailDrug.setRemindDetail(rd);
remindDetailDrugs = remindDetailDrugMgr.getRemindDetailDrugList(remindDetailDrug);
StringBuffer sb =new StringBuffer("");
for(RemindDetailDrug rdd:remindDetailDrugs){
sb.append(rdd.getDrug().getDrugName()).append("、");
}
content = content.replace("@drugs",sb.substring(0, sb.length() - 1));
Message message =new Message();
message.setUserName(SysCodeConstant.MessageModel.USERNAME);
message.setPassWord(SysCodeConstant.MessageModel.PASSWORD);
message.setReceiver(rd.getRemind().getPhoneNum());
message.setContent(content);
message.setRequestMethod("POST");
messageMgr.sendMessage(message);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
spring-task.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="messageJob" class="com.uyao.bid.common.message.MessageAction">
<property name="remindDetailMgr">
<ref bean="remindDetailMgr" />
</property>
<property name="remindDetailDrugMgr">
<ref bean="remindDetailDrugMgr"/>
</property>
</bean> <!-- 定时器执行 -->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="autoSendSmlogTriggers" />
</list>
</property>
</bean>
<!-- 定时器时间与方法的设定 -->
<bean id="autoSendSmlogTriggers" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="sendRemindMessage" /> <!-- 每分钟时发送一次 -->
</property>
<property name="cronExpression">
<!-- 秒 分 小时 ? 日期 月份 -->
<value>0 0/1 * * * ?</value>
</property>
</bean> <!-- 设定执行代码中的具休方法 -->
<bean id="sendRemindMessage" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="messageJob" />
</property>
<property name="targetMethod">
<value>sendRemindMessage</value>
</property>
</bean>
</beans>
Spring+Quartz实现定时任务的更多相关文章
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- Spring+quartz 实现定时任务job集群配置
为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...
- Spring+quartz 实现定时任务job集群配置【原】
为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...
- Spring+Quartz实现定时任务的配置方法
1.Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" ...
- quartz (二) Spring+Quartz实现定时任务的配置方法
JobDetail 设置执行的任务 :CronTrigger 触发器:设置执行的时间规则 ; Scheduler // 调度器,将任务与执行时间关联 本文转自:http://w ...
- Spring+Quartz配置定时任务
一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...
- 轻松搞定Spring+quartz的定时任务
1.spring 的定时任务写法有两种:一种是继承工作类,一种是普通的Bean,定时写法有两种写法:一种是以时间间隔启动任务SimpleTriggerBean,一种是以时刻启动任务CronTrigge ...
- Spring+Quartz实现定时任务的配置方法(插曲)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46376093 1.Scheduler的配置 <bean class=&quo ...
- Spring+Quartz实现定时任务的配置方法(转)
1.Scheduler的配置 <bean id="myScheduler" class="org.springframework.scheduling.quartz ...
随机推荐
- transformjs:让天下没有难做的生意!不对,是特效!
写在前面 transform是css3新增的一个属性,可是令开发者费解的是,其内部又有大量的属性如旋转.缩放.扭曲.平移,这也就导致了获取或者是设置transform中一个或者多个属性变得异常麻烦. ...
- Javascript中prototype属性详解
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
- iOS适配 旧项目工程在iOS9下不能正常显示
在iOS开发中,很多时候会用到旧项目,比如版本的升级.使用Demo等等, iOS SDK正在不断的升级,不断的升级给iOS开发带来了新的活力. 然而在iOS SDK新的版本出来之后,旧项目可能会出现新 ...
- DevExpress使用的过期版本解决方法
Windows控件确实有点丑,一般刚学习VS编程或者临时创建测试程序时才会使用:第三方控件,增强了一些功能,美化了控件,现在比较流行:再高级一点,就是使用WPF,看效果还不错,估计以后会成为C/S的主 ...
- Linux安全基础:find命令的使用
find 命令用于查找文件系统中的指定文件. *命令格式:find pathname -option [-print -exex -ok] 1.pathname要查找的目录路径 ~表示home目录 . ...
- Android 手机卫士--对话初次设置密码验证过程
本文实现设置密码对话框的逻辑判断 本文地址:http://www.cnblogs.com/wuyudong/p/5940551.html,转载请注明出处. 首先添加上图按钮的监听事件代码 /** * ...
- 安卓学习----使用okHttp(get方式)---下载图片
一首先下载Jar包 https://github.com/square/okhttp 如果使用android studio只需要加入依赖 compile 'com.squareup.okhttp3:o ...
- AsyncHttpClient 源码分析
上一篇文章从功能和用法上对AsyncHttpClient做了个大致介绍,今天我们和以往一样,从内部实现.原理的角度带领大家看看 其工作机制,以便加深理解.写程序越多,我发现每接触一个新东西,都会有强烈 ...
- 学习 AppFuse
1.Appfuse是个什么鬼? AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架.换句话说,AppFuse就是一个完整的各主流框架的整合版本.AppFuse总是能够紧 ...
- JavaWeb工程中web.xml基本配置
一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感,标签不嵌套,必须配对. web.xml是不是必须的呢?不是的,只要你不用到里面的配置信息就好了,不过在大型web工程下使用该文 ...