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实现定时任务的更多相关文章

  1. Spring+Quartz 实现定时任务的配置方法

    Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...

  2. Spring+quartz 实现定时任务job集群配置

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

  3. Spring+quartz 实现定时任务job集群配置【原】

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

  4. Spring+Quartz实现定时任务的配置方法

    1.Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" ...

  5. quartz (二) Spring+Quartz实现定时任务的配置方法

    JobDetail  设置执行的任务 :CronTrigger   触发器:设置执行的时间规则      ;  Scheduler    // 调度器,将任务与执行时间关联 本文转自:http://w ...

  6. Spring+Quartz配置定时任务

    一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...

  7. 轻松搞定Spring+quartz的定时任务

    1.spring 的定时任务写法有两种:一种是继承工作类,一种是普通的Bean,定时写法有两种写法:一种是以时间间隔启动任务SimpleTriggerBean,一种是以时刻启动任务CronTrigge ...

  8. Spring+Quartz实现定时任务的配置方法(插曲)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46376093 1.Scheduler的配置 <bean class=&quo ...

  9. Spring+Quartz实现定时任务的配置方法(转)

    1.Scheduler的配置 <bean id="myScheduler" class="org.springframework.scheduling.quartz ...

随机推荐

  1. 微信小程序开发总结

    一.设计 无需开发者开发的 1.小程序加载动画: 2.页面下拉刷新加载样式: 3.微信控件(拥有完整的操作反馈):如弹出框.通知.模态框...   建议用微信自己的 1.加载.反馈样式(全局.局部) ...

  2. Dynamics XRM Tools 2015 2016

    Download Link: Dynamics XRM Tools 2015/2016 Overview Dynamics XRM Tools brings you a quality range o ...

  3. 深度技术GHOST WIN7系统32.64位j极速安装版 V2016年

    系统来自系统妈:http://www.xitongma.com 深度技术GHOST win7系统64位j极速安装版 V2016年3月 系统概述 深度技术ghost win7系统64位j极速安装版  版 ...

  4. iOS开发之XCode设置--消除AFN的警告

    本篇是直接拷贝别人的博文,地址:http://blog.csdn.net/liyiyismile/article/details/50434844 在项目开发中导入第三方sdk后会提示很多这样的错误: ...

  5. [Java编程思想-学习笔记]第1章 对象导论

    1.1  抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...

  6. jacascript中的原型链以原型

    今地铁上看慕课网js课程,又学习到关于原型的一些知识,记录如下.如有偏差欢迎指正: 三张图要连起来看哦~ 图解: 1.创建一个函数foo. 2.运用函数的prototype属性(这个属性就是实例对象的 ...

  7. SQL Server 诊断查询-(2)

    Query #13 SQL Server Error Log(FC) -- Shows you where the SQL Server failover cluster diagnostic log ...

  8. RMAN备份失败: ORA-19502 & ORA-27072: File I/O error

    早上检查一ORACLE数据库的RMAN备份的邮件时,发现出现了ORA-27072: File I/O error等错误,具体信息如下所示: channel ORA_DISK_1: starting p ...

  9. leveldb源码分析--SSTable之Compaction

    对于compaction是leveldb中体量最大的一部分,也应该是最为复杂的部分,为了便于理解我们首先从一些基本的概念开始.下面是一些从doc/impl.html中翻译和整理的内容: Level 0 ...

  10. MYSQL复制

    今天我们聊聊复制,复制对于mysql的重要性不言而喻,mysql集群的负载均衡,读写分离和高可用都是基于复制实现.下文主要从4个方面展开,mysql的异步复制,半同步复制和并行复制,最后会简单聊下第三 ...