一种轻量级容器的启动方法及系统与流程

文档序号:11677206阅读:197来源:国知局
一种轻量级容器的启动方法及系统与流程

本发明涉及轻量级容器启动技术领域,特别涉及一种轻量级容器的启动方法及系统。



背景技术:

目前,对于运行某些应用的容器来说,启动的时候需要向内存中写入大量数据,初始化时间非常长,整个启动过程需要耗费大量的时间,而且每次启动的时候都要重复这一过程,使得用户每次启动容器后都要要等待很久,不仅如此,容器的扩展性也比较差,很难根据用户需要进行改进,大大降低了用户体验。



技术实现要素:

本发明提供了一种轻量级容器的启动方法及系统,解决了现有技术中容器启动耗费时间长的技术问题。

本发明解决上述技术问题的技术方案如下:一种轻量级容器的启动方法,包括:

s1、创建线程,运行bootstrap框架的boot方法,获取启动参数,并将轻量级容器类加载到内存中,所述启动参数包括:xml配置文件、容器启动端口号和类的路径;

s2、实例化所述轻量级容器类,得到轻量级容器对象;

s3、通过所述轻量级容器对象获取所述xml配置文件以及所述xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表;

s4、创建新线程,根据所述服务配置信息列表实例化所述轻量级容器对象中定义的每个服务,得到服务对象,并通过调用每个所述服务对象的初始化方法和启动方法对每个所述服务对象进行初始化和启动;

s5、当所有所述服务对象启动成功时,将所述轻量级容器对象的状态设置为启动状态。

本发明的有益效果是:本技术方案通过轻量级容器来管理应用程序,通过解析启动参数获取配置文件中的服务信息,通过启动服务来启动轻量级容器,不仅部署简单、扩展性强,而且启动速度快。

在上述技术方案的基础上,本发明还可以做如下改进。

优选地,所述步骤s2中,还包括:设置java命名和目录接口的工厂类名和系统属性,初始化jmx服务,创建新线程启动所述jmx服务。

优选地,所述步骤s3包括:

s31、分别实例化所述轻量级容器对象中的服务注册管理器、对象注册管理器和xml配置解析器,分别得到服务注册管理器对象、对象注册管理器对象和xml配置解析器对象;

s32、通过所述xml配置解析器对象读取所述启动参数中的所述xml配置文件以及所述xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表。

优选地,所述步骤s4包括:

s41、创建新线程,循环获取所述服务配置信息列表中的每个服务以及每个服务所依赖的服务;

s42、实例化每个服务所依赖的服务,得到子服务对象,将所述子服务对象分别注册到所述服务注册管理器对象和所述对象注册管理器对象中,并将所述子服务对象绑定到所述java命名和目录接口中,然后调用所述子服务对象的初始化方法对所述子服务对象进行初始化;

s43、实例化每个服务,得到父服务对象,将所述父服务对象分别注册到所述服务注册管理器对象和所述对象注册管理器对象中,并将所述父服务对象绑定到所述java命名和目录接口中,然后调用所述父服务对象的初始化方法对所述父服务对象进行初始化;

s44、循环获取所述服务注册管理器中的每个服务对象,将当前获取到的服务对象注册到所述jmx服务中,反射调用当前获取到服务对象的启动方法对当前获取到的服务对象进行启动。

优选地,所述步骤s5之后,还包括:

s6、将所述轻量级容器对象注册到所述jmx服务中;

s7、给所述轻量级容器对象添加关闭钩子。

优选地,当关闭所述轻量级容器对象时,通过所述关闭钩子反射调用为启动状态的所有服务对象的关闭方法,注销所述jmx对象中的所有服务对象。

优选地,所述步骤s1中,通过该线程当前的类加载器将轻量级容器类加载到内存中。

优选地,通过反射调用所述轻量级容器类的main方法将所述启动参数传输给所述轻量级容器对象。

优选地,所述服务配置信息包括:服务id和服务配置参数信息。

一种轻量级容器的启动系统,包括:

第一获取模块,用于创建线程,运行bootstrap框架的boot方法,获取启动参数,并将轻量级容器类加载到内存中,所述启动参数包括:xml配置文件、容器启动端口号和类的路径;

第一实例化模块,用于实例化所述轻量级容器类,得到轻量级容器对象;

第二获取模块,用于通过所述轻量级容器对象获取所述xml配置文件以及所述xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表;

第二实例化模块,用于创建新线程,根据所述服务配置信息列表实例化所述轻量级容器对象中定义的每个服务,得到服务对象,并通过调用每个所述服务对象的初始化方法和启动方法对每个所述服务对象进行初始化和启动;

启动模块,用于当所有所述服务对象启动成功时,将所述轻量级容器对象的状态设置为启动状态。

附图说明

图1为本发明实施例提供的一种轻量级容器的启动方法的流程示意图;

图2为本发明另一实施例提供的一种轻量级容器的启动方法的流程示意图;

图3为本发明另一实施例提供的一种轻量级容器的启动方法的流程示意图;

图4为本发明另一实施例实施例提供的一种轻量级容器的启动系统的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,在实施例中,提供一种轻量级容器的启动方法,包括:

s1、创建线程,运行bootstrap框架的boot方法,获取启动参数,并将轻量级容器类加载到内存中,启动参数包括:xml配置文件、容器启动端口号和类的路径;

s2、实例化轻量级容器类,得到轻量级容器对象;

s3、通过轻量级容器对象获取xml配置文件以及xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表;

s4、创建新线程,根据服务配置信息列表实例化轻量级容器对象中定义的每个服务,得到服务对象,并通过调用每个服务对象的初始化方法和启动方法对每个服务对象进行初始化和启动;

s5、当所有服务对象启动成功时,将轻量级容器对象的状态设置为启动状态。

上述实施例中,通过轻量级容器来管理应用程序,通过运行bootstrap框架的boot方法来获取启动参数,通过轻量级容器实例对象解析启动参数来获取配置文件中的服务信息,通过启动服务来启动轻量级容器,不仅部署简单、扩展性强,而且启动速度快。

bootstrap是基于html5和css3开发的,它在jquery的基础上进行了更为个性化和人性化的完善,形成一套自己独有的网站风格,并兼容大部分jquery插件。可以对bootstrap中所有的css变量进行修改,依据自己的需求裁剪代码。

所谓容器,指应用代码的运行框架。业务对象在容器里运行,被容器管理。任何容器都应该包含如下服务:生命周期管理,查找服务,配置管理,依赖解析,企业级服务,线程管理,对象池,集群服务,远程服务等。轻量级容器是用纯java开发的,不依赖j2ee,因此,扩展性更强,具有非侵入性,部署简单且可以快速启动。由于代码对轻量级容器的依赖很少,因而提高了代码的复用度,在开发过程中没有规定必须在某个平台下运行;提高了可测试性,在容器之外就可以完成测试;对构件的编写限制很少,更好的面向对象。

具体地,步骤s2中,还包括:设置java命名和目录接口的工厂类名和系统属性,初始化jmx服务,创建新线程启动jmx服务。

应理解,jndi(javanaminganddirectoryinterface,java命名和目录接口)是sun公司提供的一种标准的java命名系统接口,jndi提供统一的客户端api,通过不同的访问提供者接口jndi服务供应接口(spi)的实现,由管理者将jndiapi映射为特定的命名服务和目录系统,使得java应用程序可以和这些命名服务和目录服务之间进行交互。

应理解,jmx(javamanagementextensions,java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。jmx可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。jmx服务必须在轻量级容器类实例化过程中进行初始化和启动只有实例化轻量级容器类,得到轻量级容器对象后,才能通过轻量级容器对象中的xml配置解析器进行实例化,通过xml配置解析器对象读取启动参数中的xml配置文件以及xml配置文件包含的子配置文件中的服务id和服务配置参数信息,生成服务配置信息列表,便于后续步骤取出服务信息。

具体地,如图2所示,图1中的步骤s3包括:

s31、分别实例化轻量级容器对象中的服务注册管理器、对象注册管理器和xml配置解析器,分别得到服务注册管理器对象、对象注册管理器对象和xml配置解析器对象;

s32、通过xml配置解析器对象读取启动参数中的xml配置文件以及xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表。

具体地,如图3所示,图1中的步骤s4包括:

s41、创建新线程,循环获取服务配置信息列表中的每个服务以及每个服务所依赖的服务;

s42、实例化每个服务所依赖的服务,得到子服务对象,将子服务对象分别注册到服务注册管理器对象和对象注册管理器对象中,并将子服务对象绑定到java命名和目录接口中,然后调用子服务对象的初始化方法对子服务对象进行初始化;

s43、实例化每个服务,得到父服务对象,将父服务对象分别注册到服务注册管理器对象和对象注册管理器对象中,并将父服务对象绑定到java命名和目录接口中,然后调用父服务对象的初始化方法对父服务对象进行初始化;

s44、循环获取服务注册管理器中的每个服务对象,将当前获取到的服务对象注册到jmx服务中,反射调用当前获取到服务对象的启动方法对当前获取到的服务对象进行启动。

应理解,只有服务所依赖的所有服务均实例化,才能对该服务进行实例化,只有当所有服务对象均启动成功,轻量级容器对象才算启动成功,如果有一个服务对象没有启动成功,轻量级容器对象都不算启动成功;在确认轻量级容器对象启动成功后,将轻量级容器对象注册到jmx服务中,jmx服务则可以对其进行管理。

具体地,步骤s5之后,还包括:

s6、将轻量级容器对象注册到jmx服务中;

s7、给轻量级容器对象添加关闭钩子。

具体地,当关闭轻量级容器对象时,通过关闭钩子反射调用为启动状态的所有服务对象的关闭方法,注销jmx对象中的所有服务对象。

具体地,步骤s1中,通过该线程当前的类加载器将轻量级容器类加载到内存中。

具体地,通过反射调用轻量级容器类的main方法将启动参数传输给轻量级容器对象。

具体地,服务配置信息包括:服务id和服务配置参数信息。

如图4所示,在另一实施例中,提供一种轻量级容器的启动系统,包括:

第一获取模块1,用于创建线程,运行bootstrap框架的boot方法,获取启动参数,并将轻量级容器类加载到内存中,启动参数包括:xml配置文件、容器启动端口号和类的路径;

第一实例化模块2,用于实例化轻量级容器类,得到轻量级容器对象;

第二获取模块3,用于通过轻量级容器对象获取xml配置文件以及xml配置文件包含的子配置文件中的服务配置信息,得到服务配置信息列表;

第二实例化模块4,用于创建新线程,根据服务配置信息列表实例化轻量级容器对象中定义的每个服务,得到服务对象,并通过调用每个服务对象的初始化方法和启动方法对每个服务对象进行初始化和启动;

启动模块5,用于当所有服务对象启动成功时,将轻量级容器对象的状态设置为启动状态。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1