CN101459740B - 部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 - Google Patents
部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 Download PDFInfo
- Publication number
- CN101459740B CN101459740B CN200710199571.2A CN200710199571A CN101459740B CN 101459740 B CN101459740 B CN 101459740B CN 200710199571 A CN200710199571 A CN 200710199571A CN 101459740 B CN101459740 B CN 101459740B
- Authority
- CN
- China
- Prior art keywords
- sip
- bundle
- servlet
- container
- sip servlet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/102—Gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
- H04L65/1104—Session initiation protocol [SIP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Telephonic Communication Services (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及SIP容器以及SIP Servlet应用的技术,尤其涉及SIP容器与OSGI服务平台相融合实现对SIP Servlet应用的共同管理的技术。一种基于OSGI服务平台管理SIP Servlet应用的方法,包括:将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中;将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中,并且将SIP Servlet应用部署到SIP容器中。
Description
技术领域
本发明涉及SIP容器以及SIP Servlet应用的技术,尤其涉及SIP容器与OSGI服务平台相融合实现对SIP Servlet应用的共同管理的技术。
背景技术
OSGI服务平台(OSGI service platform,其中OSGI为Open ServicesGateway initiative即开放服务网关发起者)是一个开放并且提供统一接口标准的插件体系框架,基于这个体系框架,服务提供商、程序开发人员、软件提供商、服务网管运营商和设备提供商能够协调地联合起来开发、部署以及管理向用户提供的各种服务。OSGI服务平台是一个基于Java的平台,OSGI的提出和诞生之初,其目的主要是能够灵活方便并远程管理互联的网络嵌入设备。
大部分的路由器都支持模块的热插拔,这就意味着可以在路由器运行的状况下,动态的增加或卸载具有某种功能的功能模块,硬件界的这种热插拔技术一直就是软件界所追求的,而OSGI则使得热插拔技术在软件界成为现实。
OSGI为动态扩充、修改系统功能和改变系统行为提供了支撑,在OSGI服务平台上可以部署许多OSGI的组件,即OSGI Bundle。OSGI有一整套完整的机制去实现动态改变系统行为,基于OSGI的系统运行时就可通过安装新的Bundle、更新或停止现有的Bundle来实现系统功能的插拔。可插拔、可动态改变行为从根本上保证了系统在运行期足够的灵活性和扩展性。
OSGI服务平台框架中所有的模块都需要运行在容器范围内,在OSGI中所有模块的部署都必须以Bundle的方式进行,Bundle是一个jar文件,该ar文件和普通的jar文件的不同之处在于Meta-inf目录下的MANIFEST.MF文件的内容, 关于Bundle的所有信息都在MANIFEST.MF中进行描述,可以称它为bundle的元数据,这些信息中包含有例如Bundle的名称、描述、开发商、路径(classpath)、需要导入的包(Package)以及输出的包(Package)等。
OSGI服务平台通过调用每个Bundle的Bundle激活程序去控制该Bundle的生命周期。一般地,该Bundle激活程序为名为BundleActivator的程序。在BundleActivator中编写了Bundle启动、停止时所需要进行的工作,同时也可以在BundleActivator中发布或者监听框架的事件状态信息,以根据这些事件状态信息判断框架的运行状态,从而做出相应的调整。
在OSGI框架中每个Bundle可以通过注册在OSGI服务平台上的Bundle上下文(BundleContext),注册对外提供的服务,同时也可以通过Bundle上下文来获得需要引用的服务。
以上介绍了OSGI服务平台框架的基本构成。OSGI服务平台能够使基于该平台构建的系统具备动态改变系统行为的能力。用户可以在OSGI服务平台上部署多个可热插拔的OSGI Bundle,且用户可以在运行时安装、更新或停止这些OSGI Bundle。
SIP(Session Initiation Protocol,会话初始协议)是由IETF(InternetEngineering Task Force,因特网工程任务组)定义,基于IP(Internet Protocol,网络互连协议)的一个应用层控制协议。SIP是基于纯文本的信令协议,可以管理不同接入网络上的会晤等。会晤可以是终端设备之间任何类型的通信,如视频会晤、即时信息处理或协作会晤。该协议不会定义或限制可使用的业务,传输、服务质量、计费、安全性等问题都由基本核心网络和其它协议处理。
SIP Servlet应用是基于SIP协议的服务端小程序,理论上可以用它实现任何java语言能实现的功能。实际中,一般用它来实现web应用程序的后台逻辑操作。
SIP Servlets规范,提供了一系列的Java API和一个基于SIP容器(SIP Container)或应用服务器(Application Server)的开发模型,用于提高服务器端SIP应用的开发效率。SIP Servlets同样基于Java Servlet架构。
通过SIP Servlets规范提供的SIP容器,开发人员可以非常简单的开发出复杂的SIP Servlet应用程序。多个SIP Servlet应用程序形成一组SIP Servlets。一组SIP Servlets连同资源和部署描述文件打包后部署并运行在一个SIP容器(SIPContainer)上。
SIP容器提供了例如会话状态管理、事务管理、重发、网络连接、消息调度、线程管理、资源管理和应用程序管理等服务。应用程序中只需包含高级的消息处理和业务逻辑,开发人员不再需要在协议本身上投入过多精力,这使SIP服务的开发成为一件轻而易举的事情。
每一个SIP Servlet应用为SIP容器的一个组件,接受SIP容器的管理、调度。比如,当SIP容器接收到一个SIP请求的时候,SIP容器做出一系列的判断,判断通过调用哪个SIP Servlet应用来实现该请求。
在现有技术中,在SIP容器上开发SIP Servlet应用时,可以使用SIP容器提供的各种管理和资源,这为开发者带来很大的方便。但是基于SIP Servlets规范的SIP容器却不能支持系统的动态扩充,亦即不支持对SIP Servlet应用的热插拔,这在很大程度上限制了系统的灵活性。
显然现有技术的在SIP容器中开发、应用的SIP Servlet应用无法具备可热插拔、动态改变行为的特点,而且SIP Servlet应用程序由于不是OSGI服务平台的OSGI Bundle,所以也无法通过标准形式与OSGI Bundle通信。
发明内容
本发明实施例提供一种部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统,使得SIP Servlet应用既受SIP容器的管理和调度,同时也具备OSGI Bundle的可热插拔性能。
一种部署会话初始协议的服务端小程序应用的方法,包括:
将会话初始协议SIP服务端小程序Servlet应用以开放服务网关发起者服务平台组件OSGI Bundle的形式部署到开放服务网关发起者OSGI服务平台中,并将SIP Servlet应用部署到所述SIP容器中,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件;
编写所述SIP Servlet应用的Bundle激活程序,在所述Bundle激活程序中,将SIP Servlet应用部署到所述SIP容器中。
一种管理SIP Servlet应用的OSGI服务平台,包括:SIP容器以及SIPServlet应用,其中:
所述SIP Servlet应用以OSGI Bundle的形式部署在所述OSGI服务平台中,并注册在SIP容器中,所述SIP Servlet应用与其它OSGI Bundle通过OSGI服务平台的机制进行通信,其中所述SIP Servlet应用以开放服务网关发起者服务平台组件OSGI Bundle的形式部署在OSGI服务平台中,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件,并编写所述SIP Servlet应用的Bundle激活程序。
一种管理SIP Servlet应用的方法,包括:
OSGI服务平台部署所述SIP Servlet应用,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件,并编写所述SIP Servlet应用的Bundle激活程序;
调用所述SIP Servlet应用的Bundle激活程序;
在调用所述SIP Servlet应用的Bundle激活程序的过程中,实现将所述SIPServlet应用部署到SIP容器。
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中,使得SIP Servlet应用具有更好的动态性能,可以热插拔,并可以通过OSGI规范定义的Bundle通信方式与其它OSGI Bundle进行通信。
本发明实施例由于将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台后,又采用将SIP Servlet应用注册到SIP容器中,并建立SIP容器加载SIP Servlet应用的类的方法,从而实现SIP容器对该SIP Servlet应用的管理和调度,实现了OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用,使得SIP Servlet应用既受SIP容器的管理和调度,同时也具备OSGIBundle的可热插拔性能。
附图说明
图1为本发明实施例一实现OSGI服务平台与SIP容器相融合管理SIPServlet应用的方法的流程图;
图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容器相融合共同管理SIPServlet应用的OSGI服务平台示意图;
图7b为本发明实施例一的另一种OSGI服务平台与SIP容器共同管理SIPServlet应用的OSGI服务平台示意图;
图8为本发明实施例二的SIP Servlet应用的BundleActivator中start方法实现步骤流程图。
具体实施方式
本发明实施例中,将SIP容器以及SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中,此时,SIP容器以及SIP Servlet应用具备了OSGI Bundle的特性,OSGI服务平台可以对其生命周期进行管理,比如激活、注册、去激活等。将SIP Servlet应用注册到SIP容器中,SIP容器就可以对该SIPServlet应用进行管理和调度了。这样就实现了OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用的目的。
这里解释一下OSGI服务平台与SIP容器相融合共同管理SIP Servlet应用的含义。对于已经以OSGI Bundle的形式部署到OSGI服务平台中的SIP Servlet应用来说,OSGI服务平台主要是对其生命周期进行管理,以及对其和其它Bundle的通信进行管理。这种情况下,SIP Servlet应用就可以实现热插拔,OSGI服务平台通过调用Bundle的Bundle激活程序,即BundleActivator接口去控制其生命周期。但是OSGI服务平台并不关注SIP Servlet应用Bundle实现的功能,在SIPServlet应用激活后,OSGI服务平台并不管理该SIP Servlet应用如何调度、调用等操作。
对于已经注册到SIP容器中的SIP Servlet应用,其调度、调用等操作由SIP容器进行管理。在SIP容器接收到外部一个SIP请求后,SIP容器会根据SIPServlet应用注册的信息,决定是否调用该SIP Servlet应用来完成此任务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤,所述的存储介质,如: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应用以OSGIBundle的形式部署到OSGI服务平台的方法,包括如下步骤:
步骤S101:将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中。
编写SIP容器的作为OSGI服务平台的一个Bundle的Bundle激活程序(BundleActivator),增加SIP容器的MANIFEST.MF配置文件,该配置文件为SIP容器的Bundle配置文件;将SIP容器打包成Jar文件,激活所有的OSGIBundle后,OSGI服务平台会通过SIP容器的Bundle激活程序(BundleActivator)启动SIP容器。在SIP容器的Bundle激活程序中包含有启动、更新、停止SIP容器的操作。在SIP容器的Bundle配置文件中包括SIP容器的Bundle名称、描述、开发商、路径等。
当然,在具体实施过程中,本领域技术人员也可以不将SIP容器以OSGIBundle的形式部署到OSGI服务平台,同样实现OSGI服务平台与SIP容器共同管理SIP Servlet应用的目的。具体的实现方法,将在后续进行介绍。
步骤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应用的BundleActivator,在该BundleActivator中主要是实现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应用的BundleActivator的启动方法中创建一个SIPServlet应用的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容器加载SIP Servlet应用的类的方法。具体的,在初始化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方法的过程中,实现了将SIP Servlet应用部署到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应用的类和资源。
上述步骤S511中的将SIP Servlet应用注册到SIP容器中的具体步骤如图6a所示,具体包括如下步骤:
步骤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:获取SIP Servlet应用的Bundle实例,并将该实例传入加载对象的构造方法参数中。
获取SIP Servlet应用的Bundle实例,即获取先前创建的OSGISipApplication对象的Bundle。在获取SIP Servlet应用的Bundle实例后,将该Bundle实例传入OSGIAppClassLoader对象的构造方法参数中。当SIP容器使用OSGIAppClassLoader加载SIP Servlet应用时就会取得该SIP Servlet应用的Bundle实例,从而SIP容器就可以管理、使用该SIP Servlet应用的Bundle的资源。
通过步骤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服务平台中后,SIP Servlet应用将自己注册到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服务平台上,SIP Servlet应用也作为一个标准的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容器在加载SIP Servlet应用的资源的时候不用从SIP Servlet应用的路径中加载资源,而是通过SIP Servlet应用加载SIP Servlet应用的资源。在OSGI服务平台上卸载SIP Servlet应用时,调用SIP Servlet应用的BundleActivator的去激活程序,该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方法,从而实现了将SIP Servlet应用自动部署到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完全 相同,如图5a、图5b所示。
通过以上步骤完成了将SIP容器以及SIP Servlet应用部署到OSGI中,并且通过引用部署服务将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容器相融合共同管理SIP Servlet应用。
本发明实施例由于采用了引用部署服务将SIP Servlet应用部署到SIP容器中的方法,提高了代码效率,使得实现每个SIP Servlet应用部署到SIP容器中的任务更加快捷、方便。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种部署会话初始协议的服务端小程序应用的方法,其特征在于,包括:
将会话初始协议SIP服务端小程序Servlet应用以开放服务网关发起者服务平台组件OSGI Bundle的形式部署到开放服务网关发起者OSGI服务平台中,并将SIP Servlet应用部署到SIP容器中,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件;
编写所述SIP Servlet应用的Bundle激活程序,在所述Bundle激活程序中,将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.如权利要求1所述的方法,其特征在于,还包括:
将SIP容器以OSGI Bundle的形式部署到OSGI服务平台中;
以及,在部署过程中将SIP容器的部署服务的实例注册到Bundle上下文服务中。
4.如权利要求3所述的方法,其特征在于,所述将SIP Servlet应用以OSGI Bundle的形式部署到OSGI服务平台中,并将SIP Servlet应用部署到SIP容器中的方法包括:
组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加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容器提供加载SIP Servlet应用资源的方法。
7.如权利要求6所述的方法,其特征在于,将所述SIP Servlet应用注册到所述SIP容器中的方法包括:
解析所述SIP Servlet应用的SIP配置文件,得到SIP配置文件中的文本表达式;
创建规则表达式对象,在规则表达式对象中根据所述SIP配置文件中的文本表达式解析得到规则表达式,并把SIP Servlet应用实例对象注入到该规则表达式对象中;
将所述规则表达式注册到SIP容器的管理器中。
8.如权利要求6所述的方法,其特征在于,实现所述SIP容器加载所述SIP Servlet应用的资源的方法包括:
创建SIP Servlet应用的加载对象,所述SIP容器使用所述加载对象加载SIPServlet应用的资源;
获取SIP Servlet应用的Bundle实例,并将获取的实例传入所述加载对象的构造方法参数中。
9.如权利要求8所述的方法,其特征在于,所述SIP容器使用所述加载对象加载SIP Servlet应用的资源的方法,包括:
当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应用与其它OSGI Bundle通过OSGI服务平台的机制进行通信,其中所述SIPServlet应用以开放服务网关发起者服务平台组件OSGI Bundle的形式部署在OSGI服务平台中,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件,并编写所述SIP Servlet应用的Bundle激活程序。
11.如权利要求10所述的OSGI服务平台,其特征在于,所述SIP容器以OSGI Bundle的形式部署在所述OSGI服务平台中。
12.如权利要求10或11所述的OSGI服务平台,其特征在于,所述SIP容器以及所述SIP Servlet应用与所述其它OSGI Bundle通过OSGI服务平台的机制进行通信。
13.如权利要求10或11所述的OSGI服务平台,其特征在于,当所述OSGI服务平台部署所述SIP Servlet应用,调用所述SIP Servlet应用的Bundle激活程序时,实现了将所述SIP Servlet应用部署到SIP容器。
14.如权利要求10或11所述的OSGI服务平台,其特征在于,所述SIP容器通过SIP Servlet应用加载SIP Servlet应用的资源。
15.一种管理SIP Servlet应用的方法,其特征在于,包括:
OSGI服务平台部署所述SIP Servlet应用,包括:组织符合所述OSGI服务平台的要求的SIP Servlet应用的目录结构并增加Bundle配置文件,并编写所述SIP Servlet应用的Bundle激活程序;
调用所述SIP Servlet应用的Bundle激活程序;
在调用所述SIP Servlet应用的Bundle激活程序的过程中,实现将所述SIPServlet应用部署到SIP容器。
16.如权利要求14所述的方法,其特征在于,还包括,所述SIP容器通过SIP Servlet应用加载SIP Servlet应用的资源。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710199571.2A CN101459740B (zh) | 2007-12-14 | 2007-12-14 | 部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 |
EP08861489.6A EP2216962B1 (en) | 2007-12-14 | 2008-12-09 | A method for deploying and managing the sip servlet application and the osgi service platform thereof |
PCT/CN2008/073386 WO2009076877A1 (zh) | 2007-12-14 | 2008-12-09 | 部署、管理sip servlet应用的方法及osgi服务平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710199571.2A CN101459740B (zh) | 2007-12-14 | 2007-12-14 | 部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101459740A CN101459740A (zh) | 2009-06-17 |
CN101459740B true CN101459740B (zh) | 2011-09-14 |
Family
ID=40770355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710199571.2A Active CN101459740B (zh) | 2007-12-14 | 2007-12-14 | 部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2216962B1 (zh) |
CN (1) | CN101459740B (zh) |
WO (1) | WO2009076877A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834868B (zh) * | 2010-04-30 | 2012-10-17 | 中国科学院地理科学与资源研究所 | 一种Web空间分析服务中空间分析方法包的部署和管理方法 |
CN101977274A (zh) * | 2010-10-25 | 2011-02-16 | 中兴通讯股份有限公司 | 一种进行业务平台部署的系统及方法 |
CN102316163B (zh) * | 2011-09-07 | 2014-01-15 | 山东中创软件工程股份有限公司 | 一种实现Web容器扩展的方法及实现Web容器扩展的装置 |
CN105095970B (zh) * | 2014-04-25 | 2018-09-21 | 阿里巴巴集团控股有限公司 | 第三方应用的执行方法及系统 |
CN104407904B (zh) * | 2014-12-15 | 2018-01-02 | 深圳市科漫达智能管理科技有限公司 | 一种模块信息配置的方法及系统 |
CN105511902B (zh) * | 2015-11-09 | 2019-11-12 | Tcl集团股份有限公司 | 一种安卓平台模块动态加载的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662004A (zh) * | 2004-02-27 | 2005-08-31 | 华为技术有限公司 | 一种实现会话发起协议应用服务器多业务处理的方法 |
CN101051943A (zh) * | 2006-03-15 | 2007-10-10 | 阿尔卡特朗讯公司 | 用于OSGi捆绑件的基于TR69的服务接口 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005055549A1 (en) * | 2003-12-01 | 2005-06-16 | France Telecom | System for providing services in response to a communications session message |
US8549541B2 (en) * | 2004-03-26 | 2013-10-01 | Intellectual Ventures Ii Llc | Bridging local device communications across the wide area |
US7865607B2 (en) * | 2006-04-04 | 2011-01-04 | Movius Interactive Corporation | Servlet model for media rich applications |
JP4844205B2 (ja) * | 2006-04-05 | 2011-12-28 | 富士ゼロックス株式会社 | ソフトウェアコンポーネントのインストール方法、インストーラ、及び複合機 |
-
2007
- 2007-12-14 CN CN200710199571.2A patent/CN101459740B/zh active Active
-
2008
- 2008-12-09 EP EP08861489.6A patent/EP2216962B1/en active Active
- 2008-12-09 WO PCT/CN2008/073386 patent/WO2009076877A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662004A (zh) * | 2004-02-27 | 2005-08-31 | 华为技术有限公司 | 一种实现会话发起协议应用服务器多业务处理的方法 |
CN101051943A (zh) * | 2006-03-15 | 2007-10-10 | 阿尔卡特朗讯公司 | 用于OSGi捆绑件的基于TR69的服务接口 |
Non-Patent Citations (1)
Title |
---|
JP特开2007-279959A 2007.10.25 * |
Also Published As
Publication number | Publication date |
---|---|
CN101459740A (zh) | 2009-06-17 |
WO2009076877A1 (zh) | 2009-06-25 |
EP2216962A4 (en) | 2011-02-23 |
EP2216962A1 (en) | 2010-08-11 |
EP2216962B1 (en) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107147704B (zh) | 一种面向区块链的通用服务中间件系统 | |
CN101459740B (zh) | 部署SIP Servlet应用、管理SIP Servlet应用的方法及其系统 | |
CN102427480B (zh) | 一种多应用服务平台系统中的应用访问方法 | |
CN102413022B (zh) | 一种应用调试方法和系统 | |
US20080270617A1 (en) | Method, System and Article of Manufacture for Providing Connections and Connection Aliases Descriptors by Services and Libraries Archives | |
CN102682014A (zh) | 在浏览器上实现的开放式插件管理平台及插件管理方法 | |
US20050238050A1 (en) | System and method for a dynamic protocol framework | |
CN102316160A (zh) | 网站系统及其通信方法 | |
CN100566311C (zh) | 供应组件应用程序的系统和方法 | |
CN103036917B (zh) | 客户端平台的实现方法及客户端平台 | |
Verheecke et al. | Aspect-oriented programming for dynamic web service monitoring and selection | |
CN102523308A (zh) | 一种应用开发方法和运行该方法所开发应用的平台系统 | |
CN105404530A (zh) | 一种实现简易部署和使用私有云的系统及方法 | |
CN103197951A (zh) | 一种搭建应用运行环境的方法及装置 | |
CN111698309B (zh) | 区块链网络服务系统、方法及装置 | |
CN101222371B (zh) | 客户端组件运行管理系统 | |
US7584302B1 (en) | Business integration component for containers | |
Frei et al. | A dynamic lightweight platform for ad-hoc infrastructures | |
US8667484B2 (en) | Method and related management architecture for managing bundles in an open services gateway initiative service platform | |
EP2517103A1 (en) | Composite services provision with code download on demand | |
Fjellheim | Over-the-air deployment of applications in multi-platform environments | |
CN117076007B (zh) | 降低中台架构代码侵入的方法、装置及中台系统 | |
Elgedawy | Automatic generation for web services conversations adapters | |
Gobernado et al. | Management of service sessions in an NGN-SOA execution environment [Next-Generation Telco IT Architectures] | |
Ibrahim et al. | C-ANIS–A Contextual, Automatic and Dynamic Service-Oriented Integration Framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211222 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |