- 浏览: 349711 次
- 性别:
- 来自: 南宁
文章分类
最新评论
-
萌蜗牛:
我也用华为smproxy包发送短信,运行一会儿后总是间隔一段时 ...
半桶水开发 CMPP2.0 with Spring + JPA 2 -
萌蜗牛:
我也用华为smproxy包发送短信,运行一会儿后总是间隔一段时 ...
半桶水开发 CMPP2.0 with Spring + JPA 1 -
萌蜗牛:
我也用华为smproxy包发送短信,运行一会儿后总是间隔一段时 ...
半桶水开发 CMPP2.0 with Spring + JPA 3 -
sw970345363:
[b][/b]
jqGrid 表格demo -
二年级chuck:
哪里有Java的验证。
reCAPTCHA 学习
本来公司招进来的时候是做PHP,简历哪里手多写了会Java.结果现在做的短信增值平台要用JAVA做网关接口,把我给逮住了.只能硬着头皮上了.
生成环境:
OS: Mac OSX 10.5.6
DB: Oracle 9i
Java:dev on JDK 5 run on JDK6
JAVA IDE : netbeans6.5 path 1
Java framework : Spring 2.5 Hibernate 3 with JPA Open-CMPP
注:
关于Open_CMPP,本来用的短信库是华为那个,可是上头给我的库有问题,构造发送短信的时候死活有问题.还好找到了一个反编译的类库,用法完全跟华为的一样.作者还改了一些BUG.特别感谢他
他的blog
小结一下主要技术:
呃,主要是想学习一下在注解的支持下开发 Spring+JPA,还有用到JDK5 的多线程技术 的开发.
分多页写
首先看一下结构:
我要负责的业务就是扫描短信发送表,查找到符合条件的记录(比如发送到移动的),接发送到短信网关,如果成功就插入记录到Log表.还有一个线程是一直监听移动短信网关的下发短信,收到后记录到Rec表中
这样目前我就有2个Service
SendThreadService.java
收取下发的短信的线程
DeliverThreadService.java
生成环境:
OS: Mac OSX 10.5.6
DB: Oracle 9i
Java:dev on JDK 5 run on JDK6
JAVA IDE : netbeans6.5 path 1
Java framework : Spring 2.5 Hibernate 3 with JPA Open-CMPP
注:
关于Open_CMPP,本来用的短信库是华为那个,可是上头给我的库有问题,构造发送短信的时候死活有问题.还好找到了一个反编译的类库,用法完全跟华为的一样.作者还改了一些BUG.特别感谢他
他的blog
小结一下主要技术:
呃,主要是想学习一下在注解的支持下开发 Spring+JPA,还有用到JDK5 的多线程技术 的开发.
分多页写
- 半桶水开发 CMPP2.0 with Spring + JPA 1
- 半桶水开发 CMPP2.0 with Spring + JPA 2
- 半桶水开发 CMPP2.0 with Spring + JPA 3
首先看一下结构:
引用
- Send 表 短信待发送表
- Log 表 短信发送日志表
- Deliver 表 短信网关下发的短信表
我要负责的业务就是扫描短信发送表,查找到符合条件的记录(比如发送到移动的),接发送到短信网关,如果成功就插入记录到Log表.还有一个线程是一直监听移动短信网关的下发短信,收到后记录到Rec表中
这样目前我就有2个Service
SendThreadService.java
/** * * @author rikugun */ public class SendThreadService implements Runnable { @Autowired SendDao sendDao; //Send表的Dao @Autowired LogDao logDao; //Log表的Dao @Autowired CMPPProxy CMPPProxy; //短信代理 private Logger log = Logger.getLogger(SendThreadService.class.getName()); private final int sendinterval = 1; //puase seconds 每次发送后等待时间(秒) private final int Max_sms = 10; //每次最多从Send 表中取记录的条数 //TODO 以后改成从配置文件中读取 /* * 发送成功后插入到Log表中,然后将Send中那条记录删掉 * @param SpSmsSend 要发送的短信 */ @Transactional void insertLog(SpSmsSend sms) throws PreexistingEntityException, Exception { //将SpSmsSend转换成SpSmsLog后保存 SpSmsLog sms_log = (SpSmsLog) sms; sms_log.setSendTime(new Date(System.currentTimeMillis())); logDao.create(sms_log); sendDao.destroy(sms.getId()); } @Override public void run() { while (true) { //获取业务类型是移动的短信 smsOperator为业务类型(移动) List<SpSmsSend> order_to_send = sendDao.findCMPPEntities(Max_sms, 0); log.log(Level.INFO, "Start to Send " + order_to_send.size() + " Messages..."); for (int i = 0; i < order_to_send.size(); i++) { SpSmsSend sms = order_to_send.get(i); log.log(Level.INFO, "Sending [" + sms.getSmsLsh() + "]"); //将SpSmsSend 转换为 华为CMPP包的格式 CMPPSubmitRepMessage result = CMPPProxy.sendWithRep(TypeConv.toCMPP(order_to_send.get(i))); if (result.getResult() == 0) { try { insertLog(sms); } catch (PreexistingEntityException ex) { Logger.getLogger(SendThreadService.class.getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { Logger.getLogger(SendThreadService.class.getName()).log(Level.SEVERE, null, ex); } log.log(Level.INFO, "Success Sended!"); } else { log.log(Level.WARNING, "Send Failed!"); log.log(Level.WARNING, "Error code = " + result.getResult()); } try { Thread.sleep(1000 * sendinterval); } catch (Exception exception) { exception.printStackTrace(); } } try { Thread.sleep(1000); } catch (InterruptedException ex) { log.log(Level.SEVERE, null, ex); } } } }
收取下发的短信的线程
DeliverThreadService.java
/** * * @author rikugun */ public class DeliverThreadService implements Runnable { private final int sleeptime = 1; private Logger log = Logger.getLogger(DeliverThreadService.class.getName()); @Autowired CMPPProxy CMPPProxy; @Autowired DeliverDao deliverDao; BlockingQueue<CMPPDeliverMessage> queue; private SpSmsDeliver deliver = null; @Override public void run() { queue = CMPPProxy.getDeliveMsgs(); while (true) { log.log(Level.INFO, "Waiting for Deliver.."); try { //从队列中取得下发短信 CMPPDeliverMessage msg = queue.take(); deliver = new SpSmsDeliver(msg.getDestnationId()); deliver.setContent(msg.getMsgContent().toString()); deliver.setResTime(new Date(System.currentTimeMillis())); deliver.setSmsOperator(1); deliver.setMobileNo(msg.getSrcterminalId()); try { deliverDao.create(deliver); } catch (PreexistingEntityException ex) { log.log(Level.SEVERE, null, ex); } catch (Exception ex) { log.log(Level.SEVERE, null, ex); } log.log(Level.FINE, msg.toString()); Thread.sleep(1000 * sleeptime); } catch (InterruptedException ex) { log.log(Level.SEVERE, null, ex); } log.log(Level.FINE, "Still Waiting..."); } } }
评论
1 楼
萌蜗牛
2016-09-26
我也用华为smproxy包发送短信,运行一会儿后总是间隔一段时间报异常:java.lang.IllegalArgumentException: 定义响应激活请求的消息参数输入有误:success_Id小于0或大于255,请问楼主遇到过没?怎么解决,求分享!!!不甚感激!!!
发表评论
-
weblogic8 控制台 启用和关闭
2012-08-06 14:04 1876因为安全审查的原因,需要临时修改weblogic ,关闭 we ... -
Eclipse 整合 Mylyn Trac
2011-11-04 15:06 1883<!--?xml version="1.0&q ... -
Tuxedo 调用EJB 报错问题
2011-08-01 15:32 2345新做了个tuxedo系统, 需要调用到EJB交易 测试时报错 ... -
Weblogic8 @aix socket达上限 报错
2011-07-29 14:34 1630今天发现有台weblogic应用链接不上了,检查日志发现如下信 ... -
AIX 下安装 memcached
2011-04-01 10:48 4643生产环境需要部署memcached 简单列下安装流程 操作系 ... -
OSX SnowLeopard 下的JRE1.4
2009-12-02 14:14 2030上一次更新SL的时候没有注意Java1.4会被去掉. 重新装了 ... -
封装一个jqGrid的数据源类
2009-07-07 21:11 5708这2个月刚换单位,比较赶进度.很久不更新blog,今天抽空看了 ... -
List.toArray() 问题
2009-05-30 16:30 2428今天写代码的遇到这个问题,网上找了一下问题原因和解决办法,记一 ... -
DWR中文文档.pdf
2009-05-20 11:30 2156项目用到这个,传上来存一下 -
weblogic 8.1 下载地址
2009-05-11 12:56 10614oracle官网上的最低版本只找到10.3,因需要8.1 上网 ... -
jax-ws 学习笔记
2009-03-31 15:40 1385A Provider-based endpoint can ... -
卓望MISC1.6 的provision --无web服务器
2009-03-06 09:37 1767根据那个图片上传处理服务器的思路,小改了一个处理器.尚未测试. ... -
简单的JAVA HTTP server 如何解析附件
2009-03-03 16:34 2470想做一个简单的图片上传服务器,发现JDK6中有个HttpSer ... -
在NetBeans下用Swing做的计算器
2009-01-05 17:04 2617试用了Netbeans的gui设计,非常好用,拖拖拉拉就出来. ... -
随手做一个多线程的 CS架构的 文件传输Demo
2008-12-25 10:02 2321试一下JDK5的多线程编程,附件是代码,下载后改一下后缀名为. ... -
半桶水开发 CMPP2.0 with Spring + JPA 3
2008-12-19 10:51 2294半桶水开发 CMPP2.0 with Spring + JP ... -
半桶水开发 CMPP2.0 with Spring + JPA 2
2008-12-18 12:08 2974半桶水开发 CMPP2.0 with Spring + JP ... -
记这辈子第一次出差
2008-11-14 21:10 1341今天因柳州电子运维系统的问题没有解决,终于被派遣过去 ...
相关推荐
1. CMPP2.0协议概述: CMPP2.0是CMPP协议的一个升级版本,主要优化了协议性能,提高了数据传输效率和系统的稳定性。它支持多种业务类型,如普通短信、彩信、WAP推送等,并且支持批量提交和长短信的拆分与合并。 2....
在IT行业中,理解和掌握CMPP2.0协议对于开发与移动网络相关的应用和服务至关重要。 CMPP2.0协议的特点: 1. **高并发**:设计上支持大规模并发连接,能处理大量的短信请求,确保在高峰期也能稳定运行。 2. **高效性...
CMPP2.0协议是中国移动通信集团制定的一种短消息传输协议,主要用于SP(Service Provider)与SCP(Service Control Point)之间的数据交换,支持大规模、高效、稳定地发送和接收短信。在Java环境中实现CMPP2.0协议,...
本文将深入探讨CMPP2.0短信接口开发在C#环境中的应用。 1. **CMPP协议概述**: - CMPP协议是基于TCP/IP的通信协议,用于SP与移动运营商之间的数据传输,确保消息能够可靠、快速地发送到用户手机。 - CMPP2.0主要...
Java代码实现CMPP 2.0协议是一种在移动通信领域常见的技术,主要用于短信服务。CMPP(China Mobile Packet Protocol)是中国移动制定的一种基于TCP/IP的通信协议,用于连接SP(Service Provider)与SCP(Service ...
CMPP2.0短信网关发送短信代码是Java开发者用于与中国移动通信集团的短信服务进行交互的一种技术实现。CMPP(China Mobile Short Message Peer-to-Peer)2.0协议是移动运营商提供的一种通信协议,主要用于短信业务的...
CMPP2.0协议技术是中国移动通信领域中的一个重要标准,主要用于短信服务提供商(SP)与移动短信中心(SMSC)之间的数据传输。该协议详细定义了业务应用与短信中心之间的接口,确保了短信发送、接收的高效、稳定与...
CMPP2.0短信网关接口开发文档 CMPP2.0短信网关接口开发文档是中国移动通信集团公司发布的一份关于短信网关开发协议的文档。该文档详细介绍了CMPP2.0协议的技术细节和实现方法,为开发者提供了详细的开发指南和技术...
本人亲测可用采用华为包开发的JAVA移动短信CMPP2.0/CMPP3.0程序,希望能够帮到你
1. **连接管理**:CMPP2.0支持单连接和双连接模式。单连接模式适用于小型应用,而双连接模式则提高了数据传输的稳定性和可靠性,适合大型应用。在双连接模式下,一条连接用于发送请求,另一条用于接收响应,降低了因...
1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. ...
中国移动的CMPP2.0(China Mobile Packet Protocol version 2.0)协议是通信行业中用于短信服务的重要标准,尤其在企业级应用中广泛使用。这个协议定义了SP(Service Provider,服务提供商)与SCP(Service Control ...
这个模拟短信网关实现是一个用于测试和开发短信应用的工具,它能够帮助开发者在不依赖真实网络环境的情况下,对CMPP2.0协议进行模拟交互和功能验证。 **CMPP2.0协议概述:** CMPP2.0协议是基于TCP/IP的通信协议,...
C#是一种常用的编程语言,用于实现CMPP2.0接口可以方便地在.NET环境下进行短信服务的开发。 CMPP2.0协议主要包括以下几个主要部分: 1. 连接管理:CMPP连接通常基于TCP/IP协议,开发者需要建立并维护与SMSC的长...
CMPP 2.0网关模拟器则是开发和测试CMPP应用的重要工具,它可以帮助开发者在没有实际网关环境的情况下进行功能验证和性能测试。 CMPP 2.0协议的核心知识点包括以下几个方面: 1. **协议结构**:CMPP协议基于TCP/IP...
中国移动短信CMPP 2.0协议API是一种专用于短信服务的通信协议,广泛应用于移动通信领域,特别是企业级应用,如验证码发送、信息推送等。该协议基于TCP/IP,为服务提供商提供了高效、稳定且安全的短信发送和接收功能...
1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. ...
中国移动短信网关模拟器是为开发者和测试人员提供的一种工具,它能够模拟中国移动的CMPP2.0协议,用于测试和验证短信应用的正确性和效率。CMPP2.0(China Mobile Short Message Peer-to-Peer Protocol version 2.0)...
CMPP 2.0是该协议的一个版本,它在CMPP 1.0的基础上进行了优化和增强,提高了系统的稳定性和处理能力。在C#中实现CMPP 2.0的源代码,可以为开发者提供一套高效且可靠的短信服务平台。 本文将详细介绍CMPP 2.0协议的...