第一章 概述
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的结构
SMC
¿ Í» §³ ÌÐ ò
SMPrxoy
Ì á¹ ©µ ĺ ¯Ê ý½Ó¿ Ú
infoX
客户程序调用到SM PORXY提供的接口函数实现收发短消息,SM PROXY实现把客户
程序所发出的消息按CMPP协议进行编码后发给数据增值业务中心(infoX),由数据增值
业务中心(infoX)发送给SMC,并通过数据增值业务中心(infoX)接收SMC所响应的消息
与主动下发的消息并进行解码后,通知客户程序接收SMC主动下发的短消息。
第二章 CMPP协议的封装
CMPP协议封装在com.huawei.insa2.comm.cmpp.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使用者生成。