[转载]开源的 JAIN-SLEE SIP 软交换 -- Mobicents

卢政 ,  

2006 年 1 月 26 日

JAIN-SLEE 是一个容器标准,目标是提供移动技术与企业技术之间的整合。该标准类似于 EJB,不过是用于各种面向事件的应用程序,例如 IP 电话服务、分布式交互模拟/监控/控制等。Mobicents 是第一个而且是目前唯一开源并被 JAIN SLEE 1.0 认定的产品,它从交换协议构造上基于 JAIN-SIP。

前言

Mobicents 是一个专业开源的 VoIP 中间件平台。Mobicents 是第一个而且是目前唯一开源并被 JAIN SLEE 1.0 认定的产品,它从交换协议构造上基于 JAIN-SIP。

JAIN SLEE 是一个以事件为驱动的中间件,采用了各个服务单元(Sbb)消息机制,减少了在事物处理上的等待延迟,其工作方式是从外部协议资源扫描事件状态,然后将这些事件递交到各个处理单元去,可以以它为核心设计成网关和网守,软交换上层的应用服务器,媒体服务器等多种设备,同时适配多种交换协议。

以下分成 10 个部分来对 Mbicents-SLEE 进行详细介绍:

1. 资源适配器(Resource Adaptor)体系;

2. JAIN-SIP;

3. 事件和事件类型(Events),事件引导(Routing);

4. 行为实体(Activity)和行为实体上下文(Activity Context);

5. SBB部件和SBB实体;

6. 数据供应(Provisioned Data);

7. SLEE的一些工具(facility);

8. 服务和部署(Service and Deployment);

9. 应用范例(SIP代理服务器,信令网关);

10. 使用elipslee来进行SBB的开发;

下面展示了Mobicents Docs中的一个体系分布图:


图1 . SLEE的体系分布图
图1 . SLEE的体系分布图

1> SBB 服务管理单元(Sbb Service Management):这个部分面向上层的应用,也就是 Service Block Building 的构造和部署的主要部分,其中包含了对象持久性(Persistence),类似 EJB 的CMP 一样,对数据对象的持久性(包括生存期和数据库连接等等)由 SLEE 容器自动完成的,SBB 分成 Sbb 实体和 Sbb 对象两个组成。对整个 Sbb 的服务管理单元来说,包含有 Sbb 工厂,持久性管理,Sbb 对象池管理,服务部署者,这些对于实际的使用者而言是不可见的。用户的应用部署文件是 sbb.jar,而用户服务描述是 service.xml。

2> Sbb 运行环境(Sbb Runtime):Sbb 运行环境就是Sbb的执行体,核心是事件导向单元--Event Router,(获得事件并且分配导入到指定的 Sbb 中去),SLEE 端点管理(连接资源适配器产生事件送达端点),通过上下文(Context)方式来实现各个实体之间的联系(参看图7),和 Sbb服务管理单元之间的接口是 ActivityContext(以下为活跃实体或者行为实体上下文),用于表示独立的事件接口;和资源适配器之间的接口是 Activity,也就是行为实体,具体事件的封装,例如 SIP 的注册事件(SIP Register),这个事件会引发 Sbb 的相关注册服务(例如 RegisteraSbb);另一个接口是 SLEE Activity,这个是 SLEE 内部的行为实体,例如一些内部的工具产生的行为实体,例如定时器事件(Timer Event)和用于调试的 Trace 事件。

3> SLEE 的一些工具:和 J2EE 中的工具一样,提供了一些工具来使用,工具在 SLEE 中的定义是一些标准的功能组件,他们的提供了一些预定义的接口为应用提供服务,其中包括了Adress,Profile,Alarm,Naming。

4> 资源适配器(RA),用于具体的协议在SLEE上的封装,例如(SCAP,SS7,SIP,MGCP,H.323)当然也可以是自己的私有协议,封装的方式可以参看Mobicents官方网站的一些介绍,协议和SLEE Run-time的接口就是具体的行为实体,也就是事件的封装, 用户定义的资源适配器部署文件是RA.jar在本文中SIP资源适配器的部署文件是sip-local-ra.jar和sip-type-ra.jar。




一. 资源适配器(Resource Adaptor)体系

1.Mobicents资源适配器的概述以及定义和应用模式:

备注:Mobicents 中的资源适配器提供了非常方便的接口以便实现各种协议资源在 SLEE 上的组装,目前在 1.0a 和 1.0b中都只完成了 SIP 协议和 TCAP 协议,事实上后者的意义在于将 SIP 模拟作为 NSP 层而采用的应用层协议。

资源适配器主要是指的网络设备和协议栈本身,和状态机的有连接协议,例如我们在下面将详细介绍的JAIN-SIP 以及其他支持JAVA语言的呼叫代理协议, JCC API,Parlay/OSA 等。

资源适配器分成三个范畴,

a. 资源适配器类型(Resource adaptor type);

b. 资源适配器对象;

c. 资源适配器实体(entity);

2. 协议栈的资源在 SLEE 上的绑定:

在 Mobicents1.0a 上绑定了两个资源实体就是 JAIN-SIP 的资源实体(SIpRA),和 JAIN SLEE TCK,下面我们根据它的第三方范例 (Third-Party) 注册机(Registar)来简单介绍它的资源绑定模式:

首先是协议栈描述,就是 SIP 在 Sbb 服务上的描述,在 sbb-jar.xml 文件中会体现,这个文件是 SBB 的部署文件,可以理解为 J2EE 中的 ejb-jar.xml 文件。

如Registrar中的:




           <resource-adaptor-type-binding>
            <resource-adaptor-type-ref>
            	<resource-adaptor-type-name>jain-sip</resource-adaptor-type-name>
				//JAIN SIP的资源适配器类型
                <resource-adaptor-type-vendor>javax.sip</resource-adaptor-type-vendor>
                <resource-adaptor-type-version>1.1</resource-adaptor-type-version>
            </resource-adaptor-type-ref>
            

在JNDI中的实体上下文工厂的绑定,SBB的开发者通过lookup来调用



           
            <activity-context-interface-factory-name>
                slee/resources/jainsip/1.1/acifactory
            </activity-context-interface-factory-name>
            

定义了SBB所依靠的一个定义资源适配器对象名称在JNDI上绑定的类型



                
            <resource-adaptor-entity-binding>      
                <resource-adaptor-object-name>
                    slee/resources/jainsip/1.1/provider
                </resource-adaptor-object-name> 
                

定义了resource-adaptor-object-name中表示的资源实体对象SIPRA




                <resource-adaptor-entity-link>
                    SIPRA
                </resource-adaptor-entity-link>            
            </resource-adaptor-entity-binding>
        </resource-adaptor-type-binding>

其中:

资源适配器对象名称就是<resource-adaptor-object-name>slee/resources/jainsip/1.1/provider</resource-adaptor-object-name>

资源适配器实体的名称<resource-adaptor-entity-link>SIPRA </resource-adaptor-entity-link>,实体本身使用专门的工具DeploySipRA.sh将会对SIPRA进行创建和部署,脚本中如下描述:

call %JBOSS_HOME%/bin/SleeCommandInterface.bat -createRaEntity "ResourceAdaptorID[jainsip#NIST#1.1]" SIPRA

类型名称是:<resource-adaptor-type-name>jain-sip</resource-adaptor-type-name>

3.协议栈工厂的调用 :

在Sbb中调用lookup() 方法时都会执行一次新查找获得资源实体工厂,这里会返回工厂实例SipFactoryProvider,<resource-adaptor-type-name>包含了SBB需要对资源实体访问时候需要访问的资源实体工厂名称,例如:

fp = (SipFactoryProvider) sbbEnv.lookup("slee/resources/jainsip/1.1/provider");

SIP协议工厂,用于生产SIP的消息体(Message),SIP的头(Header),SIP的JAIN-SIP的ServerTransaction/ClientTransaction(交易的状态机,和每次会话--Cseq对应),SIP消息发送发送者和侦听事件的侦听点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值