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 ...
随机推荐
- [原][C#][winForm]分级基金折溢价WinForm网络计算器
分级基金折溢价WinForm网络计算器 通过子/母基金代码,从 [ 东方财富网,天天基金网,新浪 ] 抓取分级基金的子母基金数据(代码,名称,净值,价格), 并计算出子基金(A基金,B基金)以及母基金 ...
- 原生JS:全局属性、全局方法详解
全局属性.全局方法 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5853342.html 首先普及几个我总结的非常实用又很基础的知识:(呵呵,仅 ...
- hyper-v上的虚拟机安装linux LC后CDROM无法使用
This issue occurs because the Hyper-V Linux Integration Services unloads the ata_piix driver in orde ...
- Mac系统下Android生成keystore
首先打开终端(在搜索里面搜索Te即可出来) 然后输入 cd /Library/Java/Home/bin/ 然后这步很关键,由于我们用的是当前用户,所以没有最高权限,不能在Library文件夹下生成 ...
- Masonry使用注意事项
1 理解自身内容尺寸约束与抗压抗拉 自身内容尺寸约束:一般来说,要确定一个视图的精确位置,至少需要4个布局约束(以确定水平位置x.垂直位置y.宽度w和高度h).但是,某些用来展现内容的用户控件,例如文 ...
- AjaxHelper简介
在Asp.Net MVC中提供了AjaxHelper类: Ajax.ActionLink 创建一个超链接,点击时,使用Ajax提交数据到一个指定的控制器 Ajax.RouteLink 和ActionL ...
- 深入理解Linux修改hostname
当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问题给我好好上了一课,很多知识点,当你觉得你已经掌握的时候,其实你了解的还只是皮毛.技术活,切勿浅尝则止! ...
- 最新版powerdesign16.5连接数据库错误解决
由于工作需要,需要将数据库中的表结构逆向生成到powerdesign中,但是连接数据库一直连接不上,Connection test failed报如下错误: 解决方案: 下载ojdbc14.jar,拷 ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- Linux下TomcatVM参数修改:Native memory allocation (mmap) failed to map 3221225472 bytes for committing reserved memory.
不可行的方法最初我直接修改catalina.sh, 将JAVA_OPTS变量加上了 -server -Xms1G -Xmx1G -XX:+UserG1GC最初看起来没啥问题,但是当服务器运行几天后,发 ...