部署SIPServlet应用、管理SIPServlet应用的方法及其系统的制作方法

文档序号:7668144阅读:193来源:国知局
专利名称:部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统的制作方法
技术领域
本发明涉及SIP容器以及SIP Servlet应用的技术,尤其涉及SIP容器与OSGI服务平台相融合实现对SIP Servlet应用的共同管理的技术。
背景技术
OSGI服务平台(OSGI service platform,其中OSGI为Open ServicesGateway initiative即开放服务网关发起者)是一个开》文并且提供统一接口标准的插件体系框架,基于这个体系框架,服务提供商、程序开发人员、软件提供商、服务网管运营商和设备提供商能够协调地联合起来开发、部署以及管理向用户提供的各种服务。OSGI服务平台是一个基于Java的平台,OSGI的提出和诞生之初,其目的主要是能够灵活方便并远程管理互联的网络嵌入设备。
大部分的路由器都支持模块的热插拔,这就意味着可以在路由器运行的状况下,动态的增加或卸载具有某种功能的功能模块,硬件界的这种热插拔技术一直就是软件界所追求的,而OSGI则使得热插拔技术在软件界成为现实。
OSGI为动态扩充、修改系统功能和改变系统行为提供了支撑,在OSGI服务平台上可以部署许多OSGI的组件,即OSGIBundle。 OSGI有一整套完整的机制去实现动态改变系统行为,基于OSGI的系统运行时就可通过安装新的Bundle、更新或停止现有的Bundle来实现系统功能的插拔。可插拔、可动态改变行为从根本上保证了系统在运行期足够的灵活性和扩展性。
OSGI服务平台框架中所有的模块都需要运行在容器范围内,在OSGI中所有模块的部署都必须以Bundle的方式进行,Bundle是一个jar文件,该jar文件和普通的jar文件的不同之处在于Meta-inf目录下的MANIFEST.MF文件的内容,
6关于Bundle的所有信息都在MANIFEST.MF中进行描述,可以称它为bundle的元数据,这些信息中包含有例如Bundle的名称、描述、开发商、路径(classpath)、需要导入的包(Package)以及输出的包(Package)等。
OSGI服务平台通过调用每个Bundle的Bundle激活程序去控制该Bundle的生命周期。 一般地,该Bundle激活程序为名为BundleActivator的程序。在BundleActivator中编写了Bundle启动、停止时所需要进4亍的工作,同时也可以在BundleActivator中发布或者监听框架的事件状态信息,以才艮据这些事件状态信息判断框架的运行状态,从而做出相应的调整。
在OSGI框架中每个Bundle可以通过注册在OSGI服务平台上的Bundle上下文(BundleContext),注册对外提供的服务,同时也可以通过Bundle上下文来获得需要引用的服务。
以上介绍了OSGI服务平台框架的基本构成。OSGI服务平台能够使基于该平台构建的系统具备动态改变系统行为的能力。用户可以在OSGI服务平台上部署多个可热插拔的OSGI Bundle,且用户可以在运行时安装、更新或停止这些OSGIBundle。
SIP ( Session Initiation Protocol,会话初始协议)是由IETF (InternetEngineering Task Force,因特网工程任务组)定义,基于IP (Internet Protocol,网络互连协议)的一个应用层控制协议。SIP是基于纯文本的信令协议,可以管理不同接入网络上的会晤等。会晤可以是终端设备之间任何类型的通信,如视频会晤、即时信息处理或协作会晤。该协议不会定义或限制可使用的业务,传输、服务质量、计费、安全性等问题都由基本核心网络和其它协议处理。
SIP Servlet应用是基于SIP协议的服务端小程序,理"i仑上可以用它实现任何java语言能实现的功能。实际中, 一般用它来实现web应用程序的后台逻辑操作。
SIP Servlets规范,提供了 一系列的Java API和一个基于SIP容器(SIPContainer)或应用服务器(Application Server)的开发模型,用于提高服务器端 SIP应用的开发效率。SIP Servlets同样基于Java Servlet架构。
通过SIP Servlets规范提供的SIP容器,开发人员可以非常简单的开发出复 杂的SIP Servlet应用程序。多个SIP Servlet应用程序形成一组SIP Servlets。 一组 SlPServlets连同资源和部署描述文件打包后部署并运4亍在一个SIP容器(SIP Container)上。
SIP容器提供了例如会话状态管理、事务管理、重发、网络连接、消息 调度、线程管理、资源管理和应用程序管理等服务。应用程序中只需包含高 级的消息处理和业务逻辑,开发人员不再需要在协议本身上投入过多精力,这 使SIP服务的开发成为 一件轻而易举的事情。
每一个SIPServlet应用为SIP容器的一个组件,接受SIP容器的管理、调度。 比如,当SIP容器接收到一个SIP请求的时候,SIP容器做出一系列的判断,判 断通过调用哪个SIP Servlet应用来实现该请求。
在现有技术中,在SIP容器上开发SIP Servlet应用时,可以使用SIP容器 提供的各种管理和资源,这为开发者带来很大的方便。但是基于SIP Servlets 规范的SIP容器却不能支持系统的动态扩充,亦即不支持对SIP Servlet应用 的热插拔,这在很大程度上限制了系统的灵活性。
显然现有技术的在SIP容器中开发、应用的SIP Servlet应用无法具备可 热插拔、动态改变行为的特点,而且SIP Servlet应用程序由于不是OSGI服务 平台的OSGIBundle,所以也无法通过标准形式与OSGIBundle通信。

发明内容
本发明实施例提供一种部署SIP Servlet应用、管理SIP Servlet应用的方 法及其系统,使得SIP Servlet应用既受SIP容器的管理和调度,同时也具备 OSGI Bundle的可热插拔性能。
一种部署会话初始协议的服务端小程序应用的方法,包括
8将会话初始协议SIP服务端小程序Servlet应用以开放服务网关发起者服 务平台组件OSGI Bundle的形式部署到开放服务网关发起者OSGI服务平台 中,并将SIP Servlet应用部署到所述SIP容器中。
一种管理SIP Servlet应用的OSGI服务平台,包括SIP容器以及SIP Servlet应用,其中
所述SIP Servlet应用以OSGI Bundle的形式部署在所述OSGI服务平台 中,并注册在SIP容器中。
一种管理SIP Servlet应用的方法,包括
OSGI服务平台部署所述SIP Servlet应用,调用所述SIP Servlet应用的 Bundle激活程序;
在调用所述SIP Servlet应用的Bundle激活程序的过程中,实现将所述SIP Servlet应用部署到SIP容器。
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI 服务平台中,使得SIP Servlet应用具有更好的动态性能,可以热插拔,并可
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI 服务平台后,又采用将SIP Servlet应用注册到SIP容器中,并建立SIP容器 加载SIP Servlet应用的类的方法,从而实现SIP容器对该SIP Servlet应用的 管理和调度,实现了 OSGI服务平台与SIP容器相融合共同管理SIP Servlet 应用,使得SIP Servlet应用既受SIP容器的管理和调度,同时也具备OSGI Bundle的可热插拔性能。


图1为本发明实施例一实现OSGI服务平台与SIP容器相融合管理SIP Servlet应用的方法的流程图2为本发明实施例一将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中的流程图3为本发明实施例 一的按照SIP Servlet规范组织的SIP Servlet应用的目 录结构图、添加SIP文件的示意图4为本发明实施例一的按照OSGI服务平台的要求组织目录结构、添加 Bundle配置文件的示意图5a为本发明实施例 一 的SIP Servlet应用的BundleActivator中start方法实 现步骤流程图5b为本发明实施例一的SIP Servlet应用、SIP容器部署到OSGI服务平台 上的示意图5c为本发明实施例 一 的SIP Servlet应用部署到OSGI服务平台上的示意
图5d为本发明实施例一的初始化OSGISipApplication对象的步骤流程图; 图6a为本发明实施例一的将SIP Servlet应用注册到SIP容器中的步骤流程
图6b为本发明实施例一的实现SIP容器加载SIP Servlet应用的Bundle实例 的方法的步骤流程图7a为本发明实施例 一的OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用的OSGI服务平台示意图7b为本发明实施例 一的另 一种OSGI服务平台与SIP容器共同管理SIP Servlet应用的OSGI服务平台示意图8为本发明实施例二的SIP Servlet应用的BundleActivator中start方法实 现步骤流程图。
具体实施例方式
本发明实施例中,将SIP容器以及SIP Servlet应用以OSGI Bundle的形 式部署到OSGI服务平台中,此时,SIP容器以及SIP Servlet应用具备了 OSGI
10Bundle的特性,OSGI服务平台可以对其生命周期进行管理,比如激活、注册、 去激活等。将SIP Servlet应用注册到SIP容器中,SIP容器就可以对该SIP Servlet应用进行管理和调度了。这样就实现了 OSGI服务平台与SIP容器相融 合共同管理SIP Servlet应用的目的。
这里解释一下OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用的 含义。对于已经以OSGI Bundle的形式部署到OSGI服务平台中的SIP Servlet应 用来说,OSGI服务平台主要是对其生命周期进行管理,以及对其和其它Bundle 的通信进行管理。这种情况下,SIPServlet应用就可以实现热插拔,OSGI服务 平台通过调用Bundle的Bundle激活程序,即BundleActivator接口去控制其生命
Servlet应用激活后,OSGI服务平台并不管理该SIP Servlet应用如何调度、调用 等操作。
对于已经注册到SIP容器中的SIPServlet应用,其调度、调用等操作由SIP 容器进行管理。在SIP容器接收到外部一个SIP请求后,SIP容器会根据SIP Servlet应用注册的信息,决定是否调用该SIP Servlet应用来完成此任务。
柳P 2 * A化l -Jr .'土 士 "入Slt ^ 7、-
是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机
可读取存储介质中,该程序在执行时,包括如下步骤,所述的存储介质,如 ROM/RAM、磁碟、光盘等。
下面以具体实施例详细说明本发明提供的技术方案,其中实施例一描述 了 SIP容器以及SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台 中以及将SIP Servlet应用注册到SIP容器中的步骤;实施例二完成SIP容器以 及SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中的步骤,并 通过引用部署服务的Bundle来完成将SIP Servlet应用注册到SIP容器中的步 骤。
实施例一如图1所示,本发明实施例实现SIP容器以及SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台的方法,包括如下步骤
步骤S101:将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中。
编写SIP容器的作为OSGI服务平台的一个Bundle的Bundle激活程序 (BundleActivator),增加SIP容器的MANIFEST.MF配置文件,该配置文件 为SIP容器的Bundle配置文件;将SIP容器打包成Jar文件,激活所有的OSGI Bundle后,OSGI月l务平台会通过SIP容器的Bundle激活程序 (BundleActivator)启动SIP容器。在SIP容器的Bundle激活程序中包含有 启动、更新、停止SIP容器的操作。在SIP容器的Bundle配置文件中包括SIP 容器的Bundle名称、描述、开发商、路径等。
当然,在具体实施过程中,本领域技术人员也可以不将SIP容器以OSGI Bundle的形式部署到OSGI服务平台,同样实现OSGI服务平台与SIP容器共 同管理SIPServlet应用的目的。具体的实现方法,将在后续进行介绍。
步骤S102:将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务 平台中,并将SIP Servlet应用部署到SIP容器中。
上述步骤S102中的具体步骤如图2所示
步骤S201:在写好一个SIP Servlet应用后,按照SIP Servlet规范编写SIP 配置文件,并按规范组织好目录结构。
写好SIP Servlet应用后,必须按照SIP Servlet规范来组织目录结构并编 写配置文件,以便于SIP容器的管理。组织的目录结构如图3所示,SIP Servlet 应用的根目录下要设置WEB-INF的目录,在WEB-INF目录下有classes和lib 目录,扩展名为xml的文件,即sip.xml文件为SIP Servlet应用的配置文件。
在该配置文件中描述了该SIP Servlet应用所能实现的功能,这个SIP配 置文件将会净皮SIP容器用来识别该SIP Servlet应用所能实现的功能。
步骤S202:根据OSGI服务平台的要求,在SIP Servlet应用根目录下增 加META-INFO目录和MANIFEST.MF配置文件。作为OSGI服务平台的一个Bundle的前提是要具有符合OSGI服务平台 的要求的目录组织结构与Bundle配置文件,以便于OSGI服务平台对该Bundle
进行管理。
如图4所示,本发明实施例中的SIP Servlet应用在其才艮目录下添加 META-INFO目录,并在META-INFO目录中添加MANIFEST.MF文件,该 文件即为SIP Servlet应用作为OSGI服务平台的一个Bundle的配置文件。在 该配置文件的信息中描述了该SIP Servlet应用Bundle的名称、描述、开发商、 路径、其需要导入的包以及输出的包等。
步骤S203:编写一个SIP Servlet应用的BundleActivator的实现代码,使 得SIP Servlet应用能够作为一个OSGI Bundle部署到OSGI服务平台中。
编写一个SIP Servlet应用的Bundle激活程序,即SIP Servlet应用的 Bundle Activator,在该Bundle Activator中主要是实现SIP Servlet应用的激活、 注册、去激活。而在实现激活SIP Servlet应用的同时要实现将SIP Servlet应 用注册到SIP容器中,并实现SIP容器加载该应用的类,如图5a所示。对于 本领域的技术人员来说,实现上述BundleActivator的方法可以是直接在 BundleActivator中编写实现代码。
实现了上述的步骤,已经成功地将SIP Servlet应用作为OSGI Bundle部 署到OSGI服务平台中了 ,但是要实现该SIP Servlet应用能够被SIP容器进行 管理必须将SIP Servlet应用注册到SIP容器中,并实现SIP容器加载该应用 的类的方法。如图5a所示,上述步骤S203具体包括
步骤S501:在SIP Servlet应用的Bundle Activator的启动方法中创建一个SIP Servlet应用的SIP Servlet应用实例对象。
在SIP Servlet应用的Bundle激活程序BundleActivator中的启动方法一般是 start方法。在start方法中创建一个SIP Servlet应用实例对象OSGISipApplication, 这个对象用以在SIP容器中表示SIP Servlet应用的实例对象。
步骤S502:初始化SIP Servlet应用的SIP Servlet应用实例对象。只有在初始化OSGISipApplication对象后,SIP容器才能通过 OSGISipApplication对象完成对SIP Servlet应用的调用,其中, OSGISipApplication对象用来描述一个SIP Servlet应用,当 一个SIP Servlet应用 部署到SIP容器中时,就要创建一个该对象来表示它。。
在初始化OSGISipApplication对象的过程中需要将SIP Servlet应用部署到 SIP容器中,并且实现SIP容器加载SIPServlet应用的类的方法。具体的,在初 始化OSGISipApplication对象的过程中调用SIP容器的部署服务的 deployApplication方法来实现将SIP Servlet应用部署到SIP容器中。对于本领域 技术人员来说,可以有多种技术手段来实现调用SIP容器的部署服务的 deployApplication方法如果,SIP容器已经作为OSGI Bundle部署到OSGI服务 平台中,那么调用SIP容器的部署服务的deployApplication方法可以是通过 OSGI服务平台的Bundle上下文获得SIP容器的部署服务的实例来调用SIP容器 的部署服务的deployApplication方法,如图5b所示;如果,SIP容器没有作为 OSGI Bundle部署到OSGI服务平台中,则通过单例才莫式或者命名服务直接获得 SIP容器的部署服务的类而调用部署服务的deployApplication方法,如图5c所 示。
在调用SIP容器的部署服务的deployApplication方法的过程中,实现了将 SIPServlet应用部署到SIP容器中,如图5d所示,具体包括如下步骤 步骤S511:将SIP Servlet应用注册到SIP容器中。
将SIP Servlet应用的SIP配置文件中的内容注册到SIP容器中,SIP容器就可 以根据注册的内容决定是否调用该SIP Servlet应用。
步骤S512: SIP容器加载SIP Servlet应用的Bundle实例。
只有实现了SIP容器加载SIP Servlet应用的Bundle实例,SIP容器才可以支 配SIP Servlet应用的类和资源。步骤S601:解析SIP Servlet应用的SIP配置文件。
文件sip.xml为SIP Servlet应用的SIP配置文件,其中描述了SIP Servlet应 用的Servlet class信息以及pattern模式信息等等。其中pattern才莫式信息以文本方 式描述了表达式,该表达式为SIP Servlet应用主要实现的功能。解析SIP Servlet 应用的SIP配置文件,得到该文本表达式。
步骤S602:创建规则表达式对象,根据SIP配置文件中的文本表达式解析 得到规则表达式,并将SIP Servlet应用实例对象注入到该规则表达式对象中。
创建一个Rule对象,在该Rule对象中根据上述的文本表达式在Rule对象中 实现对该文本表达式的转换,将该文本表达式转换成SIP容器可以识别并运算 的格式——rule表达式,并调用该规则表达式对象的setter方法,SIP Servlet应 用实例对象将自己的引用注入到该规则表达式对象中。
步骤S603:将规则表达式注册到SIP容器的管理器中。
调用SIP容器中Rule Manager方法,把规则表达式注册到SIP容器的管理器中。
上述步骤S512中的实现SIP容器加载SIP Servlet应用的类的方法的具体步 骤如图6b所示
步骤S611:创建一个加载对象。
创建一个加载对象,OSGIAppClassLoader对象,这个对象SIP容器可以用 来加载SIP Servlet应用的资源。
步骤S612:获取SIPServlet应用的Bundle实例,并将该实例传入加载对象
的构造方法参数中。
获取SIP Servlet应用的Bundle实例,即获取先前创建的OSGISipApplication 对象的Bundle。在获取SIP Servlet应用的Bundle实例后,将该Bundle实例传入 OSGIAppClassLoader对象的构造方法参数中。当SIP容器使用 OSGIAppClassLoader加载SIP Servlet应用时就会取得该SIP Servlet应用的 Bundle实例,从而SIP容器就可以管理、使用该SIP Servlet应用的Bundle的资源。
15通过步骤S601-S603和步骤S611-S612,实现了将SIP Servlet应用部署到SIP 容器中。这样,在SIP容器接收到外部SIP请求后,SIP容器根据SIP请求中的消 息内容查询管理器中注册的规则表达式,并获得匹配的规则表达式对象,从 匹配的规则表达式对象中取出所述SIP Servlet应用实例对象,在该SIP Servlet 应用实例对象中使用SIP Servlet应用的加载对象加载该规则表达式对象对应 的SIP Servlet应用的资源和类,并为所述SIP Servlet应用的类创建实例,处理 该SIP请求。
本发明实施例还提供了 一种OSGI服务平台,在该OSGI服务平台上以 OSGI Bundle的形式部署了SIP容器和SIP Servlet应用,其中SIP Servlet应用部 署到SIP容器中,从而实现基于OSGI服务平台,OSGI服务平台与SIP容器共同 管理SIP Servlet应用的目的。
在实现了将SIP容器、SIP Servlet应用作为Bundle部署到了 OSGI服务 平台中后,SIPServlet应用将自己注册到SIP容器中,并且SIP容器通过使用 OSGIAppClassLoader来加载SIP Servlet应用的类,从而实现OSGI服务平台 与SIP容器相融合共同管理SIP Servlet应用。SIP Servlet应用可以同时具有作 为OSGI Bundle的可热插拔性的特点,同时也可以被SIP容器调度、管理, 集中了两者的优点。
在将SIP容器、SIP Servlet应用作为Bundle部署到了 OSGI服务平台中 后,可以实现OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用。 OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用的OSGI服务平台 示意图如图7a所示。
其中,SIP容器作为 一个标准的OSGI Bundle部署到OSGI服务平台上, SIPServlet应用也作为一个标准的OSGI Bundle部署到OSGI服务平台上。因 此SIP Servlet应用、SIP容器就可以作为标准的OSGI Bundle与其它的Bundle 可以通过OSGI服务平台的机制来进行通信。
另外,SIP容器把对每个SIP Servlet应用的相关管理功能也代理给OSGI服务平台。具体的,当OSGI服务平台部署该SIP Servlet应用Bundle时,会 自动调用SIP Servlet应用的Bundle Activator的激活程序。而SIP Servlet应用 的Bundle Activator中又实现了将SIP Servlet应用自动部署到SIP容器的功能。 这样,SIP容器在加载SIPServlet应用的资源的时候不用从SIPServlet应用的 路径中加载资源,而是通过SIP Servlet应用加载SIP Servlet应用的资源。在 OSGI服务平台上卸载SIP Servlet应用时,调用SIP Servlet应用的Bundle Activator的去激活程序,该SIP Servlet应用会自动从SIP容器中卸载。
SIP Servlet Container需要把每个SIP Servlet App相关的管理功能 (ClassLoader, App的动态部署和卸载机制)通过适配机制代理给OSGI框 架,以避免Container和OSGI框架在同一个管理功能上的冲突。
当然,对于本领域技术人员也可以采用不将SIP容器部署到OSGI服务平 台上,而实现OSGI服务平台与SIP容器共同管理SIP Servlet应用的OSGI服 务平台,如图7b所示。当OSGI服务平台部署该SIP Servlet应用Bundle时, 会自动调用SIP Servlet应用的Bundle Activator的激活程序。在Bundle Activator 的激活程序中实现了通过单例模式或者命名服务来调用SIP容器的部署服务 的deployApplication方法,从而实现了将SIPServlet应用自动部署到SIP容器 的功能。这样,SIP容器在加载SIP Servlet应用的资源的时候不用从SIP Servlet 应用的路径中加载资源,而是通过SIP Servlet应用加载SIP Servlet应用的资 源。
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI 服务平台中,使得SIP Servlet应用具有更好的动态性能,可以热插拔,并可 以通过标准方式与其它OSGI Bundle进行通信。
本发明实施例由于在将以OSGI Bundle的形式部署到OSGI服务平台后,又 采用将SIP Servlet应用注册到SIP容器中,并建立SIP容器加载SIP Servlet应用 的类的方法,从而实现SIP容器对该SIP Servlet应用的管理,此时即实现了OSGI 服务平台与SIP容器相融合共同管理SIP Servlet应用。实施例二
在具体实施本发明实施例时,可以在OSGI服务平台上部署一个部署服务
的OSGI Bundle,即部署服务bundler,该部署服务Bundle用以完成将SIP Servlet 应用部署到SIP容器中的任务。
本发明实施例实现OSGI服务平台与SIP容器相融合管理SIP Servlet应用的 方法的主要步骤与实施例一的相同,如图1所示。
本发明实施例实现将SIP Servlet应用以OSGI Bundle的形式部署到OSGI 服务平台中,并将SIP Servlet应用部署到SIP容器中的步骤与实施例一中的 相同,如图2所示。
本发明实施例中编写的SIP Servlet应用的BundleActivator的实现代码完成 的步骤,如图8所示,具体包括如下步骤
步骤S801:获取SIP Servlet应用的Bundle实例。
从Bundle上下文中获取SIP Servlet应用自己的Bundle实例,该Bundle实例 将会作为构造方法参数传入部署服务并被获取。
步骤S802:获取部署服务Bundle的Bundle实例。
从Bundle上下文中获取部署服务Bundle的Bundle实例。获取该部署服务 Bundle的Bundle实例的前提是部署服务以OSGI Bundle的形式部署到了 OSGI 服务平台中。本领域技术人员都熟悉将部署服务中实现的代码打包成jar文件, 然后部署到OSGI服务平台的技术手段。而部署服务中实现的代码完成的功能 在后续中会介绍到。
步骤S803:调用部署服务的部署方法来将SIP Servlet应用部署到SIP容器中。
在获取部署服务Bundle的Bundle实例后,根据部署服务Bundle的Bundle实 例调用部署服务的部署方法来完成将SIP Servlet应用部署到SIP容器中的任务。
其中在上述部署方法中具体完成的部署任务与实施例一的步骤S203完全
18相同,如图5a、图5b所示。
通过引用部署服务将SIP Servlet应用部署到SIP容器中,从而实现了基于OSGI 服务平台,SIP容器与OSGI服务平台共同管理SIP Servlet应用的目的。
利用部署服务来完成将SIP Servlet应用部署到SIP容器中的任务的做法就 好比编写了 一个子程序,每次执行相同步骤的时候就不需要再重新编写一段 执行该步骤的代码,而直接调用子程序就可以了。该部署服务的Bundle其实就 是为SIP Servlet应用提供部署到SIP容器的服务,这样每次部署新的SIP Servlet 应用时直接引用部署服务的Bundle就实现了将SIP Servlet应用部署到SIP容器 中的任务。
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI 服务平台中,使得SIP Servlet应用具有更好的动态性能,可以热插拔,并可 以通过标准方式与其它OSGI Bundle进行通信。
本发明实施例由于在将以OSGI Bundle的形式部署到OSGI服务平台后, 又采用将SIP Servlet应用注册到SIP容器中,并建立SIP容器加载SIP Servlet 应用的类的方法,/^而实现SIP容器对该SIP Servlet应用的管理,此时即实 现了 OSGI服务平台与SIP容器相融合共同管理SIPServlet应用。
本发明实施例由于釆用了引用部署服务将SIP Servlet应用部署到SIP容 器中的方法,提高了代码效率,使得实现每个SIP Servlet应用部署到SIP容 器中的任务更加快捷、方便。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润 饰,这些改进和润饰也应^L为本发明的保护范围。
19
权利要求
1、一种部署会话初始协议的服务端小程序应用的方法,其特征在于,包括将会话初始协议SIP服务端小程序Servlet应用以开放服务网关发起者服务平台组件OSGI Bundle的形式部署到开放服务网关发起者OSGI服务平台中,并将SIP Servlet应用部署到所述SIP容器中。
2、 如权利要求1所述的方法,其特征在于,所述将SIP Servlet应用以 OSGI Bundle的形式部署到OSGI服务平台中,并将SIP Servlet应用部署到SIP 容器中的方法包括组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加 Bundle配置文件;编写所述SIP Servlet应用的Bundle激活程序,在所述Bundle激活程序的 启动方法中,对于所述SIP容器,创建SIP Servlet应用的SIP Servlet应用实 例对象,并初始化该SIP Servlet应用实例对象;并在初始化所述SIP Servlet应用实例对象的过程中,将所述SIP Servlet应 用注册到所述SIP容器中;以及为所述SIP容器提供加载SIP Servlet应用资源 的方法。
3、 如权利要求l所述的方法,其特征在于,还包括将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中; 以及,在部署过程中将SIP容器的部署服务的实例注册到Bundle上下文 服务中。
4、 如权利要求3所述的方法,其特征在于,所述将SIP Servlet应用以 OSGI Bundle的形式部署到OSGI服务平台中,并将SIP Servlet应用部署到SIP 容器中的方法包括Bundle配置文件;编写所述SIP Servlet应用的Bundle激活程序,在所述Bundle激活程序的 启动方法中,从Bundle上下文服务中取得SIP容器的部署服务的实例并调用 该部署服务Bundle的部署方法,所述部署方法将SIP Servlet应用部署到SIP 容器中。
5、 如权利要求1所述的方法,其特征在于,所述将SIP Servlet应用以 OSGI Bundle的形式部署到OSGI服务平台中,并将SIP Servlet应用部署到SIP 容器中的方法包括组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加 Bundle配置文件;编写所述SIP Servlet应用的Bundle激活程序,在所述Bundle激活程序的 启动方法中,通过单例模式或命名服务调用SIP容器的部署服务的实例中的 部署方法,所述部署方法将SIP Servlet应用部署到SIP容器中。
6、 如权利要求4或5所述的方法,其特征在于,所述部署方法将SIP Servlet 应用部署到SIP容器中的方法包括对于所述SIP容器,创建所述SIP Servlet应用的SIP Servlet应用实例对 象,并初始化该SIP Servlet应用实例对象;并在初始化所述SIP Servlet应用实例对象的过程中,将所述SIP Servlet应 用注册到SIP容器中;为所述SIP容器提供加载SIPServlet应用资源的方法。
7、 如权利要求6所述的方法,其特征在于,将所述SIP Servlet应用注册 到所述SIP容器中的方法包括解析所述SIP Servlet应用的SIP配置文件,得到SIP配置文件中的文本表达式;创建规则表达式对象,在规则表达式对象中根据所述SIP配置文件中的文 本表达式解析得到规则表达式,并把SIP Servlet应用实例对象注入到该规则表 达式对象中;将所述规则表达式注册到SIP容器的管理器中。
8、 如权利要求6所述的方法,其特征在于,实现所述SIP容器加载所述 SIP Servlet应用的资源的方法包括创建SIP Servlet应用的加载对象,所述SIP容器使用所述加载对象加载SIP Servlet应用的资源;获取SIP Servlet应用的Bundle实例,并将获取的实例传入所述加载对象 的构造方法参数中。
9、 如权利要求8所述的方法,其特征在于,所述SIP容器使用所述加载对 象加载SIPServlet应用的资源的方法,包括当SIP容器接收到SIP请求时,根据所述SIP请求中的消息内容查询匹配的 规则表达式对象;从所述匹配的规则表达式对象中取出所述SIP Servlet应用实例对象; 在所述SIP Servlet应用实例对象中使用SIP Servlet应用的加载对象加载所规则表达式对象对应的SIP Servlet应用的资源和类,并为所述SIP Servlet应用的类创建实例,由该实例处理所述SIP请求。
10、 一种管理SIP Servlet应用的OSGI服务平台,其特征在于,包括 SIP容器以及SIP Servlet应用,其中所述SIP Servlet应用以开放服务网关发起者服务平台组件OSGI Bundle 的形式部署在OSGI服务平台中,并注册在所述SIP容器中,所述SIP Servlet 应用与 通信。
11 、如权利要求10所述的OSGI服务平台,其特征在于,所述SIP容器 以OSGI Bundle的形式部署在所述OSGI服务平台中。
12、如权利要求11所述的OSGI服务平台,其特征在于,所述SIP容器 以及所述SIP Servlet应用与所述其它OSGI Bundle通过OSGI服务平台的机制 进行通信。
13、 如权利要求10或11或12所述的OSGI服务平台,其特征在于,当 所述OSGI月l务平台部署所述SIP Servlet应用,调用所述SIP Servlet应用的 Bundle激活程序时,实现了将所述SIPServlet应用部署到SIP容器。
14、 如权利要求10或11或12所述的OSGI服务平台,其特征在于,所 述SIP容器通过SIP Servlet应用加载SIP Servlet应用的资源。
15、 一种管理SIP Servlet应用的方法,其特征在于,包括OSGI服务平台部署所述SIP Servlet应用,调用所述SIP Servlet应用的 Bundle激活程序;在调用所述SIP Servlet应用的Bundle激活程序的过程中,实现将所述SIP Servlet应用部署到SIP容器。
16、 如权利要求15所述的方法,其特征在于,还包括所述SIP容器通 过SIP Servlet应用加载SIP Servlet应用的资源。
全文摘要
本发明涉及SIP容器以及SIP Servlet应用的技术,尤其涉及SIP容器与OSGI服务平台相融合实现对SIP Servlet应用的共同管理的技术。一种基于OSGI服务平台管理SIP Servlet应用的方法,包括将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中;将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中,并且将SIP Servlet应用部署到SIP容器中。
文档编号H04M7/00GK101459740SQ20071019957
公开日2009年6月17日 申请日期2007年12月14日 优先权日2007年12月14日
发明者怛 楠, 邓海军 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1