第一章 概述
1 产品概述
目前我们提供的JAVA版本的SMProxy是在原有的UNIX平台上的短消息代理(SM PROXY)演变而来,JAVA版本的短消息代理可以同时满足Unix和WINDOW NT平台的使用。 SMProxy与ISMG建立TCP连接进行通信,并负责短消息发送和接收、维护与ISMG的握手、断连重连等;SMProxy提供客户API接口函数,包括登录PROXY、退出PROXY、发送短消息、接受短消息、接受响应信息、查询短消息信息、取消短消息等。SMProxy支持多线程并发使用发送短消息,SMProxy和ISMG之间使用的通信协议是CMPP协议。
2 组网结构
SMProxy就是运行在ICP的WWW Server或者Email Server上,负责和ISMG进行CMPP协议的通讯,要求SP的功能实体向ISMG发CMPP_SUBMIT消息,由ISMG将消息转发到某SMC上。同时,SMC也可向ISMG发送短消息,由ISMG发送给相应的SP。
3 SMProxy的结构
客户程序调用到SM PORXY提供的接口函数实现收发短消息,SM PROXY实现把客户程序所发出的消息按CMPP协议进行编码后发给数据增值业务中心(infoX),由数据增值业务中心(infoX)发送给SMC,并通过数据增值业务中心(infoX)接收SMC所响应的消息与主动下发的消息并进行解码后,通知客户程序接收SMC主动下发的短消息。
第二章 CMPP协议的封装
CMPP协议封装在com.pp.message包中,主要消息如下
(1)CMPPActiveMessage 心跳消息,对应CMPP1.2.1文档中的CMPP_Active_Test消息,是SMProxy与ISMG的心跳消息。
(2)CMPPActiveRepMessage 心跳响应消息,对应CMPP1.2.1文档中的CMPP_Active_Test_REP,是SMProxy发送心跳消息后收到的响应消息
(3)CMPPCancelMessage 删除短信消息,对应CMPP1.2.1文档中的CMPP_Cancel的消息,是SMProxy向ISMG发送的删除短消息。
(4)CMPPCancelRepMessage 删除短信响应消息,对应CMPP1.2.1文档中的CMPP_Cancel_REP的消息,是SMProxy发送删除短信后收到的响应消息。
(5)CMPPConnectMessage 请求连接消息,对应CMPP1.2.1文档中的CMPP_Connect的消息,是SMProxy向ISMG发送的建立逻辑请求连接消息。
(6)CMPPConnectRepMessage 请求连接应答消息,对应CMPP1.2.1文档中的CMPP_Connect_REP的消息,是SMProxy向ISMG发送的建立逻辑请求连接后收到的响应消息。
(7)CMPPDeliverMessage ISMG下发短信,对应CMPP1.2.1文档中的 CMPP_Deliver消息,是ISMG下发给SMProxy的短消息或者状态报告消息。
(8)CMPPDeliverRepMessage 下发短信响应,对应CMPP1.2.1文档中的 CMPP_Deliver_REP消息,是SMProxy收到的下发短信后的响应消息。
(9)CMPPQueryMessage 状态查询消息,对应CMPP1.2.1文档中的 CMPP_Query消息,是SMProxy查询Time属性指定的日期的统计信息。
(10)CMPPQueryRepMessage 状态查询的响应消息,对应CMPP1.2.1文档中的 CMPP_Query_REP消息。
1(11)CMPPSubmitMessage 消息,对应CMPP1.2.1文档中的 CMPP_Submit消息,是SMProxy发送短讯的消息。
(12)CMPPSubmitRepMessage 下发短信的响应,对应CMPP1.2.1 文档中的 CMPP_Submit_REP消息,是SMProxy发送短讯的响应消息。
(13)CMPPTerminateMessage 终止连接消息,对应CMPP1.2.1 文档中的 CMPP_Terminate消息,是ISMG和SMProxy终止逻辑连接的消息。
(14)CMPPTerminateRepMessage 终止连接的响应消息,对应CMPP1.2.1 文档中的 CMPP_Terminate_REP消息,是ISMG或SMProxy收到终止连接后发送的响应消息。
其中的心跳消息(1,2)、建立逻辑连接的消息(5,6)和终止逻辑连接消息(13,14)只是SMProxy系统内部使用消息,提供给外部的接口中不涉及这六条消息。
第三章 SMProxy使用说明
1 SMProxy提供的接口方法描述
1、send
【函数功能】
向ISMG发送CMPP消息,阻塞直到收到响应或超时。
【函数原型】
CMPPMessage send(CMPPMessage message);
【参数说明】
[IN] message - 发送的CMPP消息,包括
(1)CMPPSubmitMessage 提交短信
(2)CMPPQueryMessage 状态查询
(3)CMPPCancelMessage 删除短信
【处理】
调用这个接口方法,向ISMG发送Submit/Query/Cancel等命令消息。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
发送CMPPSubmitMessage,返回CMPPSubmitRepMessage;
发送CMPPCancelMessage,返回CMPPCancelRepMessage;
发送CMPPQueryMessage,返回CMPPQueryRepMessage;
2 close
【函数功能】
向ISMG发送终止连接CMPP消息,调用之后连接将永久不可用。
【函数原型】
Void close();
【参数说明】 无
【处理】
调用这个接口方法,SMProxy向ISMG发送CMPPTerminateMessage消息
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】 无
3 getConnState
【函数功能】
获取通讯连接的状态方法。
【函数原型】
1 String getConnState();
【参数说明】 无
【处理】
调用这个接口方法,获取TCP连接状态的描述。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
当前错误描述,若连接正常则返回null。
2 封装接口方法的SMProxy的抽象类
SMProxy在com.huawei.SMProxy的包中,封装了Send、close、getConnState方法。SMProxy是一个抽象类,需要被继承使用。
SMProxy抽象类的框架如下:
public class SMProxy
{
public SMProxy(Args args)
{
//完成初始化和向ISMG登录等工作
}
public SMProxy(Map args)
{抽象类的使用
//完成初始化和向ISMG登录等工作
}
/**
* 发送消息,阻塞直到收到响应或超时。
* 返回为收到的消息
* @exception PException 超时或通信异常。
*/
public CMPPMessage send(CMPPMessage message)
{
//发送消息
}
/**
* 连接终止的处理,由API使用者实现
* SMC连接终止后,需要执行动作的接口
*/
public void onTerminate()
{
}
/**
* 对收到消息的处理。由API使用者实现。
* @param msg 从短消息中心来的消息。
* @return 应该回的响应,由API使用者生成。
*/
public CMPPMessage onDeliver(CMPPDeliverMessage msg)
{
}
/**
* 终止连接。调用之后连接将永久不可用。
*/
public void close()
{
}
/**
* 提供给业务层调用的获取连接状态的方法
*/
public String getConnState()
{
//返回连接状态的描述
}
}
3 使用SMProxy抽象类
可以直接使用SMProxy类提供的Send、close和getConnState方法
但是如果SP有接收ISMG下发的短信的要求或ISMG断开连接的时候要求得到事件通知的时候,就必须声明一个新的类继承SMProxy,重载实现onDeliver( )和onTerminate( )。使用例子如下:
//定义MySMProxy所在的包是com.huawei.SMProxy
package com.huawei.SMProxy;
import com.pp.message.*;
import com.huawei.insa2.util.Args;
public class MySMProxy extends SMProxy
{
public MySMProxy(Args args)
{
//调用父类的构造函数,完成初始化和登录ISMG的功能,不能省略
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论