第一章  概述
1 产品概述
目前我们提供的JAVA版本的SMProxy是在原有的UNIX平台上的短消息代理(SM PROXY)演变而来,JAVA版本的短消息代理可以同时满足UnixWINDOW NT平台的使用。 SMProxyISMG建立TCP连接进行通信,并负责短消息发送和接收、维护与ISMG的握手、断连重连等;SMProxy提供客户API接口函数,包括登录PROXY、退出PROXY、发送短消息、接受短消息、接受响应信息、查询短消息信息、取消短消息等。SMProxy支持多线程并发使用发送短消息,SMProxyISMG之间使用的通信协议是CMPP协议。
2 组网结构
SMProxy就是运行在ICPWWW Server或者Email Server上,负责和ISMG进行CMPP协议的通讯,要求SP的功能实体向ISMGCMPP_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包中,主要消息如下
1CMPPActiveMessage 心跳消息,对应CMPP1.2.1文档中的CMPP_Active_Test消息,是SMProxyISMG的心跳消息。
2CMPPActiveRepMessage 心跳响应消息,对应CMPP1.2.1文档中的CMPP_Active_Test_REP,是SMProxy发送心跳消息后收到的响应消息
3CMPPCancelMessage 删除短信消息,对应CMPP1.2.1文档中的CMPP_Cancel的消息,是SMProxyISMG发送的删除短消息。
4CMPPCancelRepMessage 删除短信响应消息,对应CMPP1.2.1文档中的CMPP_Cancel_REP的消息,是SMProxy发送删除短信后收到的响应消息。
5CMPPConnectMessage 请求连接消息,对应CMPP1.2.1文档中的CMPP_Connect的消息,是SMProxyISMG发送的建立逻辑请求连接消息。
6CMPPConnectRepMessage 请求连接应答消息,对应CMPP1.2.1文档中的CMPP_Connect_REP的消息,是SMProxyISMG发送的建立逻辑请求连接后收到的响应消息。
7CMPPDeliverMessage ISMG下发短信,对应CMPP1.2.1文档中的 CMPP_Deliver消息,是ISMG下发给SMProxy的短消息或者状态报告消息。
8CMPPDeliverRepMessage 下发短信响应,对应CMPP1.2.1文档中的 CMPP_Deliver_REP消息,是SMProxy收到的下发短信后的响应消息。
9CMPPQueryMessage 状态查询消息,对应CMPP1.2.1文档中的 CMPP_Query消息,是SMProxy查询Time属性指定的日期的统计信息。
10CMPPQueryRepMessage 状态查询的响应消息,对应CMPP1.2.1文档中的 CMPP_Query_REP消息。
111CMPPSubmitMessage 消息,对应CMPP1.2.1文档中的 CMPP_Submit消息,是SMProxy发送短讯的消息。
12CMPPSubmitRepMessage 下发短信的响应,对应CMPP1.2.1 文档中的 CMPP_Submit_REP消息,是SMProxy发送短讯的响应消息。
13CMPPTerminateMessage 终止连接消息,对应CMPP1.2.1 文档中的 CMPP_Terminate消息,是ISMGSMProxy终止逻辑连接的消息。
14CMPPTerminateRepMessage 终止连接的响应消息,对应CMPP1.2.1 文档中的 CMPP_Terminate_REP消息,是ISMGSMProxy收到终止连接后发送的响应消息。
其中的心跳消息(12)、建立逻辑连接的消息(56)和终止逻辑连接消息(1314)只是SMProxy系统内部使用消息,提供给外部的接口中不涉及这六条消息。
第三章 SMProxy使用说明
1 SMProxy提供的接口方法描述
1send
【函数功能】
    ISMG发送CMPP消息,阻塞直到收到响应或超时。
【函数原型】
        CMPPMessage send(CMPPMessage message)
【参数说明】
        [IN] message - 发送的CMPP消息,包括
                          1CMPPSubmitMessage    提交短信
                          2CMPPQueryMessage    状态查询
                          3CMPPCancelMessage    删除短信
【处理】
        调用这个接口方法,向ISMG发送Submit/Query/Cancel等命令消息。
                            如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
        发送CMPPSubmitMessage,返回CMPPSubmitRepMessage
        发送CMPPCancelMessage,返回CMPPCancelRepMessage
        发送CMPPQueryMessage,返回CMPPQueryRepMessage
2 close
【函数功能】
    ISMG发送终止连接CMPP消息,调用之后连接将永久不可用。
【函数原型】
        Void close()
【参数说明】 
【处理】
        调用这个接口方法,SMProxyISMG发送CMPPTerminateMessage消息
                          如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】       
3 getConnState
【函数功能】
    获取通讯连接的状态方法。
【函数原型】
1        String getConnState()
【参数说明】 
【处理】
        调用这个接口方法,获取TCP连接状态的描述。
                          如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】       
          当前错误描述,若连接正常则返回null
2 封装接口方法的SMProxy的抽象类
SMProxycom.huawei.SMProxy的包中,封装了SendclosegetConnState方法。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类提供的SendclosegetConnState方法
但是如果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小时内删除。