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. 原生JS:RegExp对象详解

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. 轻松掌握:JavaScript单例模式

    单例模式 定义:保证一个对象(类)仅有一个实例,并提供一个访问它的全局访问点: 实现原理:利用闭包来保持对一个局部变量的引用,这个变量保存着首次创建的唯一的实例; 主要用于:全局缓存.登录浮窗等只需要 ...

  3. SharePoint 2013 配置Excel Services

    前言:本文主要介绍如何启用SharePoint 2013版本Excel Services服务,并配置Excel Web Access部件,使Excel文档可以显示在Web页面中. 简单说一下流程,Sh ...

  4. android FrameLayout详解

    首先看演示: FrameLayout框架布局是最简单的布局形式.所有添加到这个布局中的视图都以层叠的方式显示.第一个添加的控件被放在最底层,最后一个添加到框架布局中的视图显示在最顶层,上一层的控件会覆 ...

  5. Java内存以及GC

    <深入理解Java虚拟机>第二三章摘要 Java内存区域与内存溢出 Java虚拟机中的内存分配图: 各个区域的特性总结如下表: 补充说明: 当多线程情形下,可能多个线程要在堆上分配内存,那 ...

  6. iOS Swift-注释与分号

    iOS Swift-注释与分号 注释 注释是每门语言都存在的一种解释方式,Swift的注释与C语言的注释非常相似,单行注释采用//. //这是一个注释 在Swift中也可以使用多行注释,起始标记使用( ...

  7. DrawerLayout的openDrawer()和closeDrawer()方法

    如下代码 DrawerLayout mdrawerLayout; Button btn; ------------------------------------------------------- ...

  8. 深度解析mysql登录原理

    使用mysql数据库的第一步必然是建立连接登录,然后在上面执行SQL命令.无论是通过mysql的客户端,还是通过C-API,JDBC标准接口连接数据库,这个过程一定少不了.今天我们聊一聊mysql登陆 ...

  9. 从零自学Hadoop(11):Hadoop命令上

    阅读目录 序 概述 Hadoop Common Commands User Commands Administration Commands File System Shell 引用 系列索引 本文版 ...

  10. ubuntu下安装lrzsz

    secureCRT中可以使用rz和sz命令上传和下载文件,可是这要linux中安装了lrzsz才可以.我用的时候无法使用apt-get自动安装,下面介绍手动安装的方法. 1 下载lrzsz软件  ht ...