一种实现Web容器扩展的方法及实现Web容器扩展的装置转让专利

申请号 : CN201110263973.0

文献号 : CN102316163B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王娜刘耀刘民

申请人 : 山东中创软件工程股份有限公司山东中创软件商用中间件股份有限公司

摘要 :

本发明公开了一种实现Web容器扩展的方法及Web容器,应用于OSGi微内核框架中,OSGi微内核框架中与Web容器相关的单元包括:War部署器单元、Web容器框架单元和Web容器单元,该方法包括:War部署器单元将Web应用转换为逻辑单元bundle部署至框架中;Web容器框架单元监听WebContainer服务的变化和bundle状态变化,当bundle的状态为active时,调用Web容器单元判断bundle是否是Webbundle,如果是,则将bundle封装为Web应用。本发明公开的实现Web容器扩展的方法,通过对各单元的设置,通过热部署的方式部署至框架,实现了对Web容器扩展的需要。

权利要求 :

1.一种实现Web容器扩展的方法,其特征在于,应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元包括:War部署器单元、Web容器框架单元和Web容器单元,该方法包括:所述War部署器单元将Web应用转换为Webbundle部署至所述OSGi微内核框架中;

所述Web容器框架单元监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,如果是,则将所述bundle封装为Web应用;

所述Web容器单元启动所述封装的Web应用。

2.根据权利要求1所述的方法,其特征在于,还包括:设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,所述Deploy接口包括:判断部署canDeploy方法和部署deploy方法,所述类Transformer包括:转换复制transformAndCopy方法,所述War部署器单元将Web应用转换为逻辑单元bundle部署至所述OSGi微内核框架中,具体包括:调用所述canDeploy方法判断待部署的Web应用是否能够通过所述War部署器bundle进行部署;

如果是,则调用所述transformAndCopy方法将所述Web应用转换为bundle,并调用所述deploy方法将所述转换后的bundle部署至所述OSGi微内核框架中。

3.根据权利要求1所述的方法,其特征在于,还包括:设置Web容器构架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,并监听WebContainer服务的变化和bundle状态的变化,所述WebContainer接口包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法,则所述Web容器框架bundle监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,具体为:调用所述isWebbundle方法判断bundle是否为Webbundle;

所述将所述bundle封装为Web应用,具体为:

调用所述createWebApplication方法根据所述bundle创建一个封装的Web应用对象,以及,通过实现所述WebApplication接口,对所述Web应用对象进行封装。

4.根据权利要求1所述的方法,其特征在于,所述War部署器单元、所述Web容器框架单元和所述Web容器单元通过热部署的方式部署至所述OSGi微内核框架中。

5.根据权利要求1所述的方法,其特征在于,还包括:

所述Web容器架构单元负责监听Web容器服务的变化和bundle状态的变化。

6.根据权利要求1所述的方法,其特征在于,还包括:

所述Web容器单元监听所述封装的Web应用的生命周期状态。

7.一种实现Web容器扩展的装置,其特征在于,应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元包括:War部署器单元、Web容器框架单元和Web容器单元;

所述War部署器单元,用于部署Web应用至所述OSGi微内核框架中,同时将所述Web应用转换为Webbundle;

所述Web容器框架单元,用于监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,如果是,将所述bundle封装为Web应用;

所述Web容器单元,用于启动所述封装的Web应用。

8.根据权利要求7所述的装置,其特征在于,还包括:第一设置单元,用于设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,所述Deploy接口包括:判断部署canDeploy方法和部署deploy方法,所述类Transformer包括:转换复制transformAndCopy方法,所述War部署器bundle,具体包括:第一调用模块,用于调用所述canDeploy方法判断待部署的Web应用是否能够通过所述War部署器bundle进行部署;

第二调用模块,用于在第一调用模块结果为是的情况下,调用所述transformAndCopy方法将所述Web应用转换为bundle,并调用所述deploy方法将所述转换后的bundle部署至所述OSGi微内核框架中。

9.根据权利要求7所述的装置,其特征在于,还包括:第二设置单元,用于设置Web容器构架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,并监听WebContainer服务的变化和bundle状态的变化,所述Webcontainer接口包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法,所述Web容器框架bundle,具体为:第三调用模块,用于调用所述isWebbundle方法判断bundle是否为Webbundle;

第四调用模块,用于调用所述createWebApplication方法根据所述bundle创建一个封装的Web应用对象,以及,通过实现所述WebApplication接口,对所述Web应用对象进行封装。

10.根据权利要求7所述的装置,其特征在于,所述War部署器单元、所述Web容器框架单元和所述Web容器单元通过热部署的方式部署至所述OSGi微内核框架中。

说明书 :

一种实现Web容器扩展的方法及实现Web容器扩展的装置

技术领域

[0001] 本发明涉及计算机Web容器应用领域,更具体的说,是涉及一种实现Web容器扩展的方法及Web容器。

背景技术

[0002] Web容器是服务器端容器,主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口,其所使用的是因特网(Intemet)上统一、开放的标准,如HTTP(HyperText Transfer Protocol,超文本传输协议)、XML(Extensible Markup Language,可扩展标记语言)、SOAP(Simple Object Access Protocol,简单对象访问协议)、WSDL(Web Services DescriptionLanguage,Web Service描述语言)等,所以Web容器可以在任何支持这些标准的环境(例如:Windows,Linux)中使用。
[0003] Web容器主要功能是提供网上信息浏览服务,负责管理和运行Servlets(一种服务器端的Java应用程序)、JSP(JavaServer Pages一种实现普通静态HTML和动态HTML混合编码的技术)页面、过滤器和事件监听器等组件,这些组件是遵循Java EE(SUN公司推出的企业级应用程序版本)规范的标准Web组件。目前Web应用于J2EE(Java 2platform enterprise edition,Java 2企业版本平台)平台,该平台提供了一个基于组件的方法来设计、开发、装配以及部署企业应用程序,该平台还提供多层分布式应用模型、组件复用和客户端远程的分布式对象的框架。
[0004] 由于现有的Web容器应用于J2EE平台上,是用于分散和分布式环境下网络信息交换的通讯协议下的Web容器,使得Web容器的可扩展性较差。

发明内容

[0005] 有鉴于此,本发明主要目的在于提供一种实现Web容器扩展的方法及Web容器,以克服现有技术中Web容器的可扩展性较差的问题。
[0006] 为实现上述目的,本发明提供如下技术方案:提供一种实现Web容器扩展的方法,应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容 器相关的单元包括:War部署器单元、Web容器框架单元和Web容器单元,该方法包括:
[0007] 所述War部署器单元将Web应用转换为逻辑单元bundle部署至所述OSGi微内核框架中;
[0008] 所述Web容器框架单元监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,如果是,则将所述bundle封装为Web应用;
[0009] 所述Web容器单元启动所述封装的Web应用。
[0010] 其中,还包括:设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,所述Deploy接口包括:判断部署canDeploy方法和部署deploy方法,所述类Transformer包括:转换复制transformAndCopy方法,所述War部署器单元将所述Web应用转换为逻辑单元bundle部署至所述OSGi微内核框架中,具体包括:
[0011] 调用所述canDeploy方法判断待部署的Web应用是否能够通过所述War部署器单元进行部署;
[0012] 如果是,则调用所述transformAndCopy方法将所述Web应用转换为bundle,并调用所述deploy方法将所述转换后的bundle部署至所述OSGi微内核框架中。 [0013] 其中,还包括:设置Web容器构架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,并监听WebContainer服务的变化和bundle状态的变化,所述WebContainer接口包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法,则所述Web容器框架bundle监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,具体为:
[0014] 调用所述isWebbundle方法判断bundle是否为Webbundle;
[0015] 所述将所述bundle封装为Web应用,具体为:
[0016] 调用所述createWebApplication方法根据所述bundle创建一个封装的Web应用对象,以及,
[0017] 通过实现所述WebApplication接口,对所述的Web应用对象进行封装。 [0018] 其中,所述War部署器单元、Web容器框架单元和Web容器单元通过热部署的方式部署至所述OSGi微内核框架中。
[0019] 其中,还包括:
[0020] 所述Web容器架构单元负责监听Web容器服务的变化和bundle状态的变化。 [0021] 其中,还包括:
[0022] 所述Web容器单元监听所述封装的Web应用的生命周期状态。
[0023] 本发明还公开了一种Web容器,应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元包括:War部署器单元、Web容器框架单元和Web容器单元; [0024] 所述War部署器单元,用于部署Web应用至所述OSGi微内核框架中,同时将所述Web应用转换为逻辑单元bundle;
[0025] 所述Web容器框架单元,用于监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,如果是,则将所述bundle封装为Web应用;
[0026] 所述Web容器单元,用于启动所述封装的Web应用。
[0027] 其中,还包括:第一设置单元,用于设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,所述Deploy接口包括:判断部署canDeploy方法和部署deploy方法,所述类Transformer包括:转换复制transformAndCopy方法,所述War部署器bundle,具体包括:
[0028] 第一调用模块,用于调用所述canDeploy方法判断待部署的Web应用是否能够通过所述War部署器bundle进行部署;
[0029] 第二调用模块,用于在第一调用模块结果为是的情况下,调用所述transformAndCopy方法将所述Web应用转换为bundle,并调用所述deploy方法将所述转换后的bundle部署至所述OSGI微内核框架中。
[0030] 其中,还包括:第二设置单元,用于设置Web容器框架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,所述WebContainer接口包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法,所述Web容器框架bundle,具体为:
[0031] 第三调用模块,用于调用所述isWebbundle方法判断bundle是否为Webbundle; [0032] 第四调用模块,用于调用所述createWebApplication方法根据所述bundle创建一个封装的Web应用对象,以及,
[0033] 通过实现所述WebApplication接口,对所述Web应用对象进行封装。 [0034] 其中,所述War部署器单元、所述Web容器框架单元和所述Web容器单元通过热部署的方式部署至所述OSGi微内核框架中。
[0035] 经由上述的技术方案可知,与现有技术相比,本发明公开了一种实现Web服务容器扩展的方法,首先,通过该方法中的将Web应用经过转换,部署至OSGi微内核框架中,对转换后的数据再封装为Web应用,并由Web容器来将封装的Web应用启动,实现了对Web容器的扩展;其次,War部署器单元、Web容器框架单元和Web容器单元,将这些单元通过热部署的方式部署至OSGi微内核框架中,提高了Web容器的可扩展性,使得系统的可伸缩性和模块可移植性增强,并且对Web容器模块进行生命周期的管理,支持热插拔特性。 附图说明
[0036] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037] 图1为本发明实施例公开的一种实现Web容器扩展的方法的流程图; [0038] 图2为本发明实施例公开的另一种实现Web容器扩展的方法的流程图; [0039] 图3为本发明实施例Web容器框架bundle对Web容器服务变化的监听主要工作的流程图;
[0040] 图4为本发明实施例设置类加载器的工作的流程图;
[0041] 图5为本发明实施例Web容器的框架图。

具体实施方式

[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 本发明实施例是基于OSGi(Open Service Gateway Initiative,公共服务平台)环境下的中间件微内核框架上扩展的Web容器。OSGi内核框架是一个微核结构的容器,所有的模块都需要运行在容器范围内才能使用OSGi规范定义的内容,在OSGi中所有模块的部署都必须以bundle的方式来进行部署。OSGi规范所支持面向服务的组件模型,可以提供动态性的支持,为网络服务定义了一个标准的、面向组件的计算机环境,为执行程序提供标准的环境,确保实现动态部署。
[0044] 请参阅附图1,为本发明公开的一种实现Web容器扩展的方法实施例的流程图,可以应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元可以包括:War部署器单元、Web容器框架单元和Web容器单元,该方法可以包括:
[0045] 步骤101:War部署器单元将所述Web应用转换为逻辑单元bundle部署至OSGi微内核框架中;
[0046] 其中,War部署器单元可以包括一个War部署器,主要为了实现Deploy接口和类Transformer。Deploy接口中的方法可以包括:canDeploy方法主要是判断构件能否被部署,判断是不是一个标准的Web应用,deploy方法是将Web应用转化成的Webbundle部署至OSGi微内核框架中,这是实现部署中的核心方法,redeploy方法是重部署Web应用的实现方法,undeploy方法是进行卸载Web应用的功能实现方法,start方法用于启动部署后的Webbundle的实现方法,stop方法用于停止已启动的Webbundle。类Transformer中的方法包括:transformAndCopy方法主要是将We b应用转化成Webbundle,之后war部署器就可以将转化后的bundle部署至OSGi微内核框架中。其中,canDeploy方法判断的标准是待部署的Web应用根目录下存在WEB-INF/Web.xml文件和 META-INF/MANIFEST.MF文件,并且MANIFEST.MF文件的内容中不存在bundle-SymbolicName的属性,则可以调用此部署器进行部署。
[0047] 步骤102:Web容器框架单元监听WebContainer服务的变化和bundle状态变化,当bundle的状态为active时,调用Web容器单元判断bundle是否是Webbundle,如果是,则进入步骤103,如果否,不做任何处理;
[0048] 步骤103:将此bundle封装为Web应用;
[0049] 其中,Web容器框架单元可以包括一个Web容器框架bundle,主要提供WebContainer接口和WebApplication接口,框架单元中还有实现类,实现类可以包括:加载器类Activator是Web容器框架bundle的激活器,使用白板模式跟踪Web容器服务对象的变化;扩展Web容器跟踪器类ExtendedWebContainerTracker是使用白板模式跟踪Web容器服务对象的变化;Web容器制造跟踪器类WebContainerBundleCustomizer,设置Web容器框架bundle主要负责监听Web容器服务的变化,当有Web容器服务发布时,将其作为Web容器框架的后端服务。
[0050] WebContainer接口中的方法可以包括:由于Web容器只对Webbundle进行相应的操作,isWebbundle方法是用来判断一个bundle是否是一个Webbundle,startWebApplication方法是将指定的WebApplication对象启动,createWebApplication方法用来根据指定的bundle创建一个封装的Web应用对象,stopWebApplication方法是将已启动的WebApplication对象停止,getIP方法是用来获取Web服务器主机的IP地址。getPort方法是用来根据协议获取对应的端口号。
[0051] 其中,判断一个bundle是一个Webbundle,只要满足下列四个条件任意之一即可: [0052] (1)获取bundle的位置的字符串是以.war结尾;
[0053] (2)获取bundle的位置的字符串是以Webbundle开始;
[0054] (3)bundle的MANIFEST.MF文件的内容中存在Web-ContextPath的属性; [0055] (4)bundle根目录下存在WEB-INF/Web.xml文件。
[0056] 类ExtendedWebContainerTracker中的方法可以包括:addingService添加方法用于Web服务的添加功能的实现和removedService卸载方法用于Web服务的卸载功能的实现;类WebContainerBundleCustomizer 中的方法包括:addingbundle添加方法用于bundle的添加功能的实现和removedbundle卸载方法用于bundle的卸载功能的实现。 [0057] 步骤104:Web容器单元启动封装的Web应用。
[0058] 其中,Web容器单元包括一个Web容器bundle,将Web容器作为一个bundle安装到框架中去,并发布实现WebContainer接口的服务,此bundle主要负责监听Webbundle的生命周期,当其启动或停止时,Web容器bundle负责管理Webbundle中Servlet、jsp的生命周期。
[0059] 实现类可以包括:Web容器实现类WebContainerImpl为WebContainer接口的具体实现类;Web应用实现类WebApplicationImpl为WebApplication接口的实现类,封装Web应用对象的相关信息;加载链类ChainedClassLoader为扩展Web容器的类加载器链。 [0060] 在上述本发明公开的实施例的基础上,请参阅附图2,为本发明公开的另一种实现Web容器扩展的方法实施例的流程图,可以应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元可以包括:War部署器单元、Web容器框架单元和Web容器单元,该方法可以包括:
[0061] 步骤201:设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,Deploy接口包括:判断部署 canDeploy方法和部署deploy方 法,Transformer包括:转换复制transformAndCopy方法;
[0062] 其中,设置部署器是为了将接收到的Web应用转换成Webbundle部署至框架中,在Web应用转bundle的过程中,调用部署器实现的Deploy接口中的方法将Web应用转化为bundle。
[0063] 步骤202:War部署器单元将所述Web应用转换为逻辑单元bundle部署至OSGi微内核框架中;
[0064] 其中,Deploy接口中的方法还可以包括:redeploy方法是重部署Web应用的实现方法,undeploy方法是进行卸载Web应用的功能实现方法,start方法用于启动部署后的Webbundle的实现方法,stop方法用于停止已启动的Webbundle。类Transformer中的方法可以包括:transformAndCopy方法主要是将Web应用转化成Webbundle,之后war部署器就可以将转化后的bundle部署至OSGi微内核框架中。
[0065] 步骤203:调用canDeploy方法判断待部署的Web应用是否能够通过War部署器bundle部署,如果是,则进入步骤204;如果否,不做任何处理;
[0066] 步骤204:调用transformAndCopy方法将Web应用转换为Webbundle; [0067] 步骤205:调用deploy方法将转换后的bundle部署到OSGi微内核框架中; [0068] 其中,canDeploy方法判断的标准是待部署的Web应用根目录下存在WEB-INF/Web.xml文件和META-INF/MANIFEST.MF文件,并且MANIFEST.MF文件的内容中不存在bundle-SymbolicName的属性,则可以调用此部署器进行部署。
[0069] 步骤206:设置Web容器构架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,监听WebContainer服务的变化和bundle状态变化,当bundle的状态为active时,调用Web容器单元判断bundle是否是Webbundle,WebContainer接口中的方法可以包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法;
[0070] 其中,设置Web容器构架bundle,此bundle主要提供封装Web容器服务必须实现的接口,主要负责监听Web容器服务的变化,当有Web容器服务发布时,将其作为Web容器框架的自动跟踪服务。
[0071] 其中,参见附图3,为Web容器框架bundle对Web容器服务变化的监听主要工作的流程图:
[0072] 步骤301:Web容器框架bundle启动时会在激活器中构造并打开一个Web容器服务跟踪对象,通过白板模式跟踪,当有Web容器服务注册时,将跟踪对象设置到类WebContainerBundleCustomizer中;
[0073] 步骤302:使用白板模式跟踪Web容器服务对象,当跟踪到有Web容器服务注册和注销时,就会触发类ExtendedWebContainerTracker中的addingService添加方法或removedService卸载方法对跟踪到的We b容器服务进行添加或卸载;
[0074] 步骤303:使用扩展Extender模式跟踪Web应用bundle的变化,利用Web容器对象来构造bundle跟踪器,跟踪状态为ACTIVE的bundle;
[0075] 步骤304:当检测到bundle增加或者移除时,就会触发类Web容器制造跟踪器WebContainerBundleCustomizer中的addingbundle添加方法或removedbundle卸载方法对检测到的bundle进行添加或卸载。
[0076] 步骤207:调用isWebbundle方法判断bundle是否为Webbundle,如果是,则进入步骤208,如果否,则不做任何处理;
[0077] 其中,调用isWebbundle方法判断一个bundle是否是一个Webbundle,只要满足下列四个条件任意之一即可:
[0078] (1)获取bundle的位置的字符串是以.war结尾;
[0079] (2)获取bundle的位置的字符串是以Webbundle开始;
[0080] (3)bundle的MANIFEST.MF文件的内容中存在Web-ContextPath的属性; [0081] (4)bundle根目录下存在WEB-INF/Web.xml文件。
[0082] 步骤208:调用createWebApplication方法根据指定的bundle创建一个封装的Web应用对象;
[0083] 创建封装的Web应用对象是为了通过WebApplication接口,将其封装到Web容器;
[0084] 步骤209:通过实现WebApplication接口,对封装的Web应用对象进行封装。 [0085] WebApplication接口为设置Web容器构架bundle必须要实现的接口,用来封装Web应用。
[0086] 步骤210:Web容器单元启动封装的Web应用。
[0087] 其中,Web容器单元包括一个Web容器bundle,将Web容器作为一个bundle安装到框架中去,并发布实现WebContainer接口的服务,此bundle主要负责监听Webbundle的生命周期,当其启动或停止时,Web容器bundle负责管理Webbundle中Servlet、jsp的生命周期。
[0088] 具体的启动Web应用为实现类WebContainerImpl,来实现WebContainer接口,用于启动Web容器,并在启动Web应用的同时,设置类加载器,参见附图4,为设置类加载器的工作的流程图:
[0089] 步骤401:获取当前线程,并通过当前的线程获取当前的类加载器。 [0090] 步骤402:创建新的类加载链,此加载链的顺序为:Web应用本身的类加载器,Web容器的类加载器,WebXmlClassLoader类加载器。
[0091] 步骤403:设置当前的类加载器为新创建的类加载链。
[0092] 类WebApplicationImpl为WebApplication接口的具体实现类,用于封装Web应用对象的相关信息。
[0093] 类ChainedClassLoader,扩展的Web容器的类加载器链,用来查找相关的类和资源。
[0094] 通过此实施例对第一个实施例的方法步骤进行进一步的详细和增加,本发明更好的实现了对Web容器扩展的需要,实现对Web容器模块进行生命周期的管理,实现对Web容器服务的变化的监听。
[0095] 在上述公开的实施例中,在已有的微内核框架的基础上,将设置的War部署器单元、Web容器框架单元和Web容器单元通过热部署的方式部署至OSGi微内核框架中。 [0096] 上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种Web容器,下面参见附图5给出的具体实施例的框架图进行详细说明。本实施例提供的一种Web容器,也可以应用于OSGi微内核框架中,所述OSGi微内核框架中与Web容器相关的单元可以包括:War部署器单元501,用于部署Web应用到OSGi微内核框架中,同时将所述Web应用转换为逻辑单元bundle;Web容器框架单元502,用于监听WebContainer服务的变化和bundle状态变化,当所述bundle的状态为active时,调用所述Web容器单元判断所述bundle是否是Webbundle,如果是,将所述bundle封装为Web应用;Web容器单元503,用于启动所述封装的Web应用。 [0097] 其中,War部署器单元还可以包括:第一设置单元504,用于设置War部署器bundle,以提供部署Deploy接口和转换类Transformer,Deploy接口中方法可以包括:判断部署canDeploy方法和部署deploy方法,类Transformer中方法可以包括:转换复制transformAndCopy方法,则War部署器bundle,具体可以包括:
[0098] 第一调用模块506,用于调用canDeploy方法判断待部署的Web应用是否能够通过War部署器bundle部署;
[0099] 第二调用模块507,用于在第一调用模块结果为是的情况下,调用transformAndCopy方法将Web应用转换为bundle,并调用deploy方法将转换后的bundle部署至OSGi微内核框架中。
[0100] Web容器框架单元还可以包括:
[0101] 第二设置单元505,用于设置Web容器构架bundle,以提供Web容器WebContainer接口和Web应用WebApplication接口,并监听WebContainer服务的变化和bundle状态的变化,所述WebContainer接口中的方法可以包括:判断Web逻辑单元isWebbundle方法和创建Web应用对象createWebApplication方法,则Web容器框架bundle,具体可以包括: [0102] 第三调用模块508,用于调用isWebbundle方法判断bundle是否为Webbundle; [0103] 第四调用模块509,用于调用createwebApplication方法根据指定的bundle创建一个封装的Web应用对象,以及,
[0104] 通过实现WebApplication接口,对Web应用对象进行封装。
[0105] 在上述公开的实施例中,在已有的微内核框架的基础上,将设置的War部署器单元501、Web容器框架单元502和Web容器单元503通过热部署的方式部署至所述OSGi微内核框架中。
[0106] 综上所述:对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。