卢政 , 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> 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。 备注:Mobicents 中的资源适配器提供了非常方便的接口以便实现各种协议资源在 SLEE 上的组装,目前在 1.0a 和 1.0b中都只完成了 SIP 协议和 TCAP 协议,事实上后者的意义在于将 SIP 模拟作为 NSP 层而采用的应用层协议。 资源适配器主要是指的网络设备和协议栈本身,和状态机的有连接协议,例如我们在下面将详细介绍的JAIN-SIP 以及其他支持JAVA语言的呼叫代理协议, JCC API,Parlay/OSA 等。 资源适配器分成三个范畴, a. 资源适配器类型(Resource adaptor type); b. 资源适配器对象; c. 资源适配器实体(entity); 在 Mobicents1.0a 上绑定了两个资源实体就是 JAIN-SIP 的资源实体(SIpRA),和 JAIN SLEE TCK,下面我们根据它的第三方范例 (Third-Party) 注册机(Registar)来简单介绍它的资源绑定模式: 首先是协议栈描述,就是 SIP 在 Sbb 服务上的描述,在 sbb-jar.xml 文件中会体现,这个文件是 SBB 的部署文件,可以理解为 J2EE 中的 ejb-jar.xml 文件。 如Registrar中的:
在JNDI中的实体上下文工厂的绑定,SBB的开发者通过lookup来调用
定义了SBB所依靠的一个定义资源适配器对象名称在JNDI上绑定的类型
定义了resource-adaptor-object-name中表示的资源实体对象SIPRA
其中: 资源适配器对象名称就是<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> 在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消息发送发送者和侦听事件的侦听点。 |
[转载]开源的 JAIN-SLEE SIP 软交换 -- Mobicents
最新推荐文章于 2016-04-01 21:51:00 发布
本文介绍了开源项目Mobicents,它是一个基于JAIN-SLEE标准的SIP软交换解决方案。通过EJB和JMX接口,开发者可以轻松构建和管理通信服务。Mobicents提供了丰富的功能,包括服务器组件和工具,为Java开发者在电信领域工作提供了强大支持。
摘要由CSDN通过智能技术生成