`
mizhao1984
  • 浏览: 91664 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

利用Jdiameter与OCS进行交互

阅读更多

一.工作流程:

客户端发送cer命令去请求连接服务器(OCS),当ocs返回成功的cea命令,则表明与ocs的链接建立成功;

为了保证客户端与服务器连接正常,需每隔一段时间发送dwr命令检测链路;

有了以上的保证,客户端可以放心的发送ccr命令与服务器进行数据交互

 

二.操作步骤

1.初始化(与ocs连接和心跳响应被jdiameter内部实现,开发者可以不考虑构造和发送cer命令和dwr命令)

init方法:

   ClientConfiguration clientConfiguration = new ClientConfiguration();
   Stack stack = new org.jdiameter.client.impl.StackImpl();

   SessionFactory factory = stack.init(clientConfiguration);

    Loggers.FSM.logger().setLevel(Level.ALL);
    Loggers.Stack.logger().setLevel(Level.ALL);
    ConsoleHandler fh = new ConsoleHandler();
    fh.setLevel(Level.ALL);
    stack.getLogger().addHandler(fh);
    stack.getLogger().setUseParentHandlers(false);
    // start(Mode mode, long timeout, java.util.concurrent.TimeUnit
    // unit)
    stack.start(Mode.ALL_PEERS, stackTimeOut, TimeUnit.SECONDS);
ClientConfiguration类:

public static class ClientConfiguration extends EmptyConfiguration {
  public ClientConfiguration() {
   super();
   log.info("加载配置文件开始");
   AppConfiguration appConfiguration = AppConfiguration.getInstance();
   add(OwnDiameterURI, "aaa://" + AvpContants.ORIGIN_HOST + ":"
     + appConfiguration.getClientPort());
   log.info("OwnDiameterURI:" + "aaa://" + AvpContants.ORIGIN_HOST
     + ":" + appConfiguration.getClientPort());
   add(OwnIPAddress, appConfiguration.getClientIp());
   add(OwnRealm, hostRealm);
   add(OwnVendorID, vendorId);
   add(ApplicationId,
   // AppId 1
     getInstance().add(VendorId, vendorId).add(AcctApplId,
       acctApplId));
   add(DwaTimeOut, (long) appConfiguration.getAvpDwrTimeout());
   // dwr 间隔时间
   add(IacTimeOut, (long) appConfiguration.getAvpDwrTimeout());
   add(CeaTimeOut, (long) appConfiguration.getAvpCerTimeout());
   add(RecTimeOut, (long) appConfiguration.getAvpCerTimeout());

   // peerTable 用来管理peer
   // 一个Peer对象表示一个远程的Diameter客户端,服务器或者代理。
   add(PeerTable,
   // Peer 1
     getInstance().add(
       PeerName,
       "aaa://" + appConfiguration.getServerIp() + ":"
         + appConfiguration.getServerPort()));// 连接ip+port
   log.info("PeerName___" + "aaa://" + appConfiguration.getServerIp()
     + ":" + appConfiguration.getServerPort());
   // realm 域信息
   add(RealmTable,
   // Realm 1
     getInstance().add(
       RealmEntry,
       hostRealm + ":" + AvpContants.ORIGIN_HOST + ","
         + appConfiguration.getServerIp()));
   log.info("RealmEntry___" + hostRealm + ":"
     + AvpContants.ORIGIN_HOST + ","
     + appConfiguration.getServerIp());
   
   org.jdiameter.client.impl.helpers.AppConfiguration extensionPoints = (org.jdiameter.client.impl.helpers.AppConfiguration) getChildren(Extensions.ordinal())[0];
            extensionPoints.add(InternalPeerController, "com.sntele.surfing.ability.ocs.test.MyPeerTable");
  }
 }

 

2.构造命令ccr与发送命令到ocs

Session session = factory.getNewSession();
  // createRequest(int commandCode, ApplicationId appId, java.lang.String
  // destRealm, java.lang.String destHost)
  Request request = session.createRequest(command,
    org.jdiameter.api.ApplicationId.createByAccAppId(vendorId,
      acctApplId), hostRealm);

AvpSet avpSet = request.getAvps();

//  {Auth-Application-Id} DCCA      4
  avpSet.addAvp(AvpCode.AUTH_APPLICATION_ID,4,true,false);
//  {Service-Context-Id}
  avpSet.addAvp(AvpCode.SERVICE_CONTEXR_ID,AvpContants.SERVICE_CONTEXT_ID_ISMP,true,false,false);
//  {CC-Request-Type} 4 - EVENT_REQUEST
  avpSet.addAvp(AvpCode.CC_REQUEST_TYPE,4,true,false);
//  {CC-Request-Number} 0
  avpSet.addAvp(AvpCode.CC_REQUEST_NUMBER,0,true,false);

...........................................

Future<Message> future = session.send(request, timeOut,
    TimeUnit.SECONDS);

(Answer) future.get();

3.解析ocs返回的cca信息

  log.info("验证OCS请求返回信息  start");
  int commandCode = answer.getCommandCode();//命令码
  log.info("返回的命令编码:" + commandCode);

  int resultCode = answer.getResultCode().getInteger32();//结果码

  AvpSet avpSet = answer.getAvps();//返回数据集合

  

三.如果在dwr命令中断时,由于心跳连接(dwr)被封装在jdiameter内,可通过以下方法得知连接什么时候断开

在ClientConfiguration类加入:

org.jdiameter.client.impl.helpers.AppConfiguration extensionPoints = (org.jdiameter.client.impl.helpers.AppConfiguration) getChildren(Extensions.ordinal())[0];
            extensionPoints.add(InternalPeerController, "test.MyPeerTable");

 

创建MyPeerTable类(继承与PeerTableImpl),并重写ActionContext的sendDwrMessage()方法即可

 

分享到:
评论

相关推荐

    中国电信在线计费系统(OCS)OCP接口规范

    中国电信在线计费系统(OCS)OCP接口规范是中国电信移动业务在线计费系统的计费接口协议,旨在规范OCS与综合业务管理平台ISMP、OCS与智能网SCP、OCS与内容计费网关CCG之间的接口协议。该规范基于国内外在线计费协议...

    认识ocs(ocs)

    1. **开放APIs**: OCS的关键组成部分是其开放APIs,这些APIs定义了与通信服务交互的标准化接口。开发者可以使用这些接口在自己的应用中实现各种通信功能,无需深入了解底层通信协议的复杂性。常见的API包括WebRTC...

    华为的OCS内部培训资料

    - **接口服务器**:作为系统与其他网络元素交互的桥梁,如对接BSS(Business Support Systems)、计费网关等。 - **业务逻辑处理单元**:根据预设的业务规则进行决策,例如额度控制、优惠策略等。 4. **OCS系统的...

    很完整的ocs配置使用文档

    - 测试客户端与OCS服务器的连接和功能。 ### 8. 部署Live Meeting 2007客户端 - 安装Live Meeting客户端,用于远程协作和会议。 - 部署Outlook加载项,方便创建和参加Live Meeting。 - 自定义会议邀请模板,以符合...

    ocs详细部署文档一步步指南

    本文将基于文档中的内容,深度解析OCS企业版的部署步骤与关键知识点。 ### 一、先决条件 部署OCS企业版前,需确保满足以下基础环境设置: 1. **安装VC++2005 SP1**:用于支持OCS所需的运行时库。 2. **安装.NET ...

    OCS 2007 R2 CWA Setup

    CWA的主窗口是用户与OCS交互的界面。它提供了一个直观的布局,用户可以查看联系人列表、发起即时消息、拨打电话、加入会议等。界面通常包括以下部分: 1. 登录界面:用户输入凭据以连接到OCS服务器。 2. 联系人列表...

    UM 与 OCS的整合

    ### Exchange 2007 UM 与 OCS 2007 整合知识点 #### 一、背景介绍 统一通信(Unified Communications, UC)技术的发展使得不同通信平台之间的融合成为可能。Microsoft Exchange Server 2007 中的统一消息(Unified...

    ocs2007介绍内容不错

    标题与描述中的关键词“ocs2007介绍内容不错”,以及标签“ocs2007server”指向了Microsoft Office Communications Server 2007(以下简称OCS 2007)这一企业级统一通信解决方案。本文旨在深入解析OCS 2007的关键...

    OCS90跨网段配置工具1.0.0.14.zip

    1. **蓝牙门禁控制器配置**:该工具支持对OCS90系列蓝牙门禁控制器进行参数设置,包括但不限于蓝牙配对、权限设置、时间同步、报警设置等,确保门禁系统的安全与稳定运行。 2. **跨网段通信**:突破传统网络限制,...

    OCS Inventory NG安装后 提示三个错误解决方法

    "OCS Inventory NG安装后提示三个错误解决方法" OCS Inventory NG是一款开源的计算机资产管理和Inventory管理软件,旨在帮助IT管理员管理和跟踪计算机资产。然而,在安装完成后,用户可能会遇到三个错误提示,本文...

    OCS 配置、使用说明书

    微软Office OCS 配置、使用说明书

    中国联通OCS接口规范

    1. **接口定义**:规范详细阐述了OCS与其他系统之间的接口,包括与业务支持系统(BSS)、操作支持系统(OSS)、网络设备以及第三方应用的交互。这些接口通常包括HTTP、FTP、 Diameter、GTP等通信协议,确保了数据...

    GLPI+OCS inventory-NG资产管理软件实施文档

    当GLPI与OCS Inventory-NG结合使用时,GLPI可以从OCS Inventory-NG的数据库中获取硬件和软件配置信息,并根据用户的设置展示在GLPI的界面上,用户可以方便地查询、分析和导出这些信息。这种集成使得IT资产管理变得...

    OCS INVERTY 安装说明

    9. **Web服务**:提供SOAP接口的Web服务访问,便于与其他系统集成。 10. **插件支持**:通过API接口,可以扩展额外的功能和集成第三方应用。 **OCS+GLPI应用架构图**:结合GLPI(Gestion Libre de Parc ...

    OCS 2007 R2和AsteriskNOW互联教程.pdf

    本教程旨在详细介绍如何配置 OCS 2007 R2 与 AsteriskNOW 进行互联互通的过程,以便实现两者之间的电话通信功能。 #### 二、环境准备 在开始配置前,需要确保以下条件已满足: 1. **虚拟机环境**:使用 VMware ...

    中国电信在线计费系统(OCS)总体技术方案(V1.0)

    接口是OCS系统与其他系统或外部网络进行通信的桥梁,包括OCS与其他业务支撑系统(如SCP、ISMP、CCG)之间的接口。这些接口必须满足标准化和规范化的要求,以确保不同系统间能够有效交互信息。一个设计良好的接口能够...

    OCS 2007图文部署手册 完整版

    《OCS 2007图文部署手册 完整版》是针对微软的Office Communications Server 2007(简称OCS 2007)的一款详尽的安装与部署指南,非常适合初学者学习。OCS 2007是微软推出的统一通信解决方案,它在提升性能的同时,...

    OCS培训课件.pdf

    OCS培训课件

Global site tag (gtag.js) - Google Analytics