一种构件管理方法及系统的制作方法

文档序号:7903372阅读:317来源:国知局
专利名称:一种构件管理方法及系统的制作方法
技术领域
本申请涉及OSGI框架领域,特别是涉及一种基于JMX的远程构件管理的方法及系统。
背景技术
声明式服务是一种在OSGI框架中简化的面向服务构件编程模型,此模型的可扩展性、提供服务的简化方式等优点备受开发人员的青睐。声明式服务提供了一种全新的开发OSGI环境中服务构件的方式,它使用声明式的方式来发布、查找和绑定OSGI的服务,这种方式简化服务构件实现中因为管理动态环境而导致的非功能性需求,从而使开发人员更加专注于自己的功能性业务逻辑实现。在使用声明式服务方式进行构件开发时,涉及到如何对构件进行本地和远程管理的问题;通常使用JMX对受管资源进行管理;服务构件的本地和远程管理,按照JMX规范所描述的原则开发的管理构件,称为Manageable Bean (MBean) ;MBean的构造必须遵循由JMX 规范所描述的涉及模式及相关接口,这样可以保证所有的MBean都可以以标准的形式提供被管理的资源设备。为使构件具备被JMX管理的能力,开发人员需要熟悉JMX的相关内容,并且构件需要实现特定接口(标准MBean、DynamicMBean等),标志自己为可被管理的对象,这样会使开发变得相对复杂;而且构件在声明式服务构架上运行时可进行加载、卸载和替换,若构件已被卸载就不应该具备被管理的能力,如何根据不同状态实时改变被管理的状态也是一个待研究的重要问题。

发明内容
为解决上述技术问题,本申请实施例提供一种构件管理方法及系统,无需构件实现特定接口而具备JMX管理能力,简化了开发过程;并且具备更新构件被管理的能力。技术方案如下—种构件管理方法,所述方法基于一 JMX代理平台,所述JMX代理平台中设置有 MBean服务器;所述方法包括对所述构件进行加载并解析所述构件的元数据文件获取所述元数据文件中的文件数据;依据所述获取的文件数据将所述构件封装为动态MBean (Manageable Bean,管理构件);将所述动态MBean注册为声明式框架服务;监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。上述的方法,优选的,对所述注册至MBena服务器中的MBean进行管理包括读取和重新改写MBean中的属性值;
执行MBean中定义的接口方法;获取MBean中发出的通知事件对象。上述的方法,优选的,所述监听服务状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中包括当监听得到所述服务状态改变且所述服务状态为服务加载时,将所述服务对应的 MBean注册至MBean服务器中。上述的方法,优选的,所述监听服务状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中包括当监听得到所述服务状态改变且所述服务状态为服务卸载时,将所述服务对应的 MBean反注册至MBean服务器中。一种构件管理系统,所述系统基于一 JMX代理平台,所述JMX代理平台中设置有 MBean服务器;所述系统包括加载单元,用于对所述构件进行加载;解析单元,用于解析所述构件的元数据文件获取所述元数据文件中的文件数据;封装单元,用于依据所述获取的文件数据将所述构件封装为动态 MBean (Manageable Bean,管理构件);注册单元,用于将所述动态MBean注册为声明式框架服务;管理单元,用于监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。上述的系统,优选的,所述管理单元包括改写子单元,用于读取和重新改写MBean中的属性值;执行子单元,用于执行MBean中定义的接口方法;获取子单元,获取MBean中发出的通知事件对象。上述的系统,优选的,所述管理单元包括注册子单元,用于当监听得到所述服务状态改变且所述服务状态为服务加载时, 将所述服务对应的MBean注册至MBean服务器中。上述的系统,优选的,所述管理单元包括反注册子单元,用于当监听得到所述服务状态改变且所述服务状态为服务卸载时,将所述服务对应的MBean反注册至MBean服务器中。由以上本申请实施例提供的技术方案可见,本发明提供的构件管理方法及系统, 基于JMX代理平台,在所述JMX平台中设置有MB服务器;将需要管理的构件进行加载,解析所述构件元数据文件中的文件数据,依据所述文件数据将所述构件封装为动态MBean ;将所述动态MBean注册为声明式框架服务;监听所述服务的状态,依据所述服务的不同状态, 将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。本发明提供的构件管理方法及系统提供了元数据声明的方式或者注解的方式来配置管理能力,这样用户不需要关心JMX规范所定义的内容,只需要关心构件的管理能力;另外,本发明提供了维护构件管理的生命周期能力,能够动态跟踪构件所在的bundle在框架中的状态,根据管理构件的不同状态做相关处理,从而实现了构件的管理仅在运行期有效的动态管理能力。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。图1为本申请实施例一提供的一种构件管理方法的流程图;图2为本申请实施例一提供的加载管理构件的方法流程图;图3为本申请实施例一提供的卸载管理构件的方法流程图;图4为本申请实施例一提供的MBean远程管理示意图;图5为本申请实施例二提供的一种构件管理系统的结构示意图;图6为本申请实施例二提供的一种构件管理系统的又一结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本申请方案。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。实施例一本申请实施例提供的一种构件管理方法的流程图如图1所示,所述方法基于一 JMX代理平台,所述JMX代理由MBean服务器、一组MBean、代理服务、还有协议适配器(连接器)等组件构成,这些代理级对象充当管理应用程序和受控资源之间的桥梁,直接管理受控资源,并且使受控资源可以通过连接器或协议适配器与管理应用程序通信;服务构件在该声明式服务平台上运行时,可进行动态加载、卸载和替换,本申请实施例提供的方法增加了构件的服务监听机制,当服务构件状态发生改变时,可实时监听到服务状态改变的信息;所述方法包括步骤SlOl 对所述构件进行加载并解析所述构件的元数据文件获取所述元数据文件中的文件数据;步骤S102 依据所述获取的文件数据将所述构件封装为动态MBean ;管理构件加载到声明式框架并处于激活状态,声明式服务框架负责解析管理构件的元数据文件,根据元数据文件的数据将其封装为动态MBean;本申请实施例提供的方法定义了配置管理构件的元数据文件的schema文件,管理构件需依照此schema文件配置被包装为MBean的一些属性信息,以及暴露的属性ftOperty和方法Method信息,其中 Property元素用于定义MBean暴露字段的属性,Method元素用于定义MBean暴露方法的属性;步骤S103 将所述动态MBean注册为声明式框架服务;注册动态MBean为声明式服务框架可管理的服务,本申请实施例提供的方法由于增加了服务监听机制,监听到此服务注册后,就可以通过框架获取此服务;步骤S104:监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理;通过框架获取服务后,通过服务的属性信息识别是否为MBean对象,若未MBean对象,将此MBean注册到MBeanServer中;通过对MBeanRegistration接口的实现,管理构件可以添加MBean注册与注销时机的控制;注册到MBean服务器之后,就可以在程序中读取和重新改写MBean上的属性值,执行MBean上定义的接口方法和获取MBean上发出来的通知事件对象;MBean服务器负责MBean的生命周期控制,当监听到管理构件的服务状态发生变化(加载、卸载、替换),本申请实施例提供的方法就会根据这些状态做相关处理;当服务构件加载时,注册MBean对象到MBean服务器中;当服务构件卸载时,反注册MBean对象;当服务构件替换时,先反注册MBean对象,再重新注册MBean对象到MBean服务器中;并且, 当MBean的注册/反注册事件前后,MBean服务器都会动态检查“管理构件”是否实现了 MBeanRegistration接口,如果返回结果为真,MB服务即会调用相应的回调函数;本申请实施例提供的加载管理构件和卸载管理构件的流程图分别如本申请实施例提供的图2及图3 所示如图2所示,包括步骤S201 封装管理构件为动态MBean ;步骤S202 注册动态MBean为框架的服务;步骤S203 监听框架的服务构件状态;步骤S204 监听服务状态是否改变;如改变执行步骤S205 ;否则,返回执行步骤 S203 ;步骤S205 监听服务状态是否注册,如已注册,执行步骤S206 ;步骤S206 通过获取服务属性获取ObjectName名称,注册此MBean到 MBeanServer φ。图3所示,包括步骤S301 监听框架的服务构件状态;步骤S302 监听服务状态是否改变;如未改变返回执行步骤S301,否则,执行步骤 S303 ;步骤S303 监听状态是否反注册;如已反注册,执行步骤S304 ;步骤S304 通过获取服务属性获取ObjectName名称,反注册此MBean到 MBeanServer φ。本申请实施例提供的对构件远程管理的工作原理为通过对相应的连接器服务端 (connector server)发出请求,一个远程管理应用程序可以与JMX代理建立连接,随后才可以通过其本地的连接器客户端(connector client)调用远程MBean所提供的操作;典型的,一个远程客户通过MBeaMerver的一个接口方法子集,该子集来自MBeaMerver接口的父接口(parent interface)所定义的方法集。本申请实施例中,对于远程管理MBean的一示意图如图4所示,连接器客户端指定 MBean服务器的远程代表的角色,管理程序向其发出getState的方法调用,这种方式的动态调用通常是与MBean的自省(introspection)机制协作的,通过MBean的自省,可以动态的发现管理接口提供的属性集合方法集以及其他所有MBean对象特征,对本地和远程都一样;代理对象通常由MBean类自动产生,管理应用程序直接向代理对象提出getState 方法的调用请求,代理对象再依赖连接器客户端将此请求传送给远程的JMX代理层,最后传给目标MBean,请求的响应则以相反的路径传回。对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。实施例二针对以上方法实施例,本申请实施例还提供了一种构件管理系统,所述系统基于一 JMX代理平台,所述JMX代理平台中设置有MBean服务器;其结构示意图如图5所示,包括加载单元401、解析单元402、封装单元403、注册单元404和管理单元405 ;其中加载单元401,用于对所述构件进行加载;解析单元402,用于解析所述构件的元数据文件获取所述元数据文件中的文件数据;封装单元403,用于依据所述获取的文件数据将所述构件封装为动态 MBean (Manageable Bean,管理构件);注册单元404,用于将所述动态MBean注册为声明式框架服务;管理单元405,用于监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。本申请实施例还提供了构件管理系统的另一结构示意图如图6所示,其中管理单元405包括改写子单元406,用于读取和重新改写MBean中的属性值;执行子单元407,用于执行MBean中定义的接口方法;获取子单元408,获取MBean中发出的通知事件对象。本申请实施例提供的管理单元中,还包括注册子单元409,用于当监听得到所述服务状态改变且所述服务状态为服务加载时,将所述服务对应的MBean注册至MBean服务器中。反注册子单元410,用于当监听得到所述服务状态改变且所述服务状态为服务卸载时,将所述服务对应的MBean反注册至MBean服务器中。对于系统实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所述仅是本申请的具体实施方式
,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
权利要求
1.一种构件管理方法,其特征在于,所述方法基于一 JMX代理平台,所述JMX代理平台中设置有MBean服务器;所述方法包括对所述构件进行加载并解析所述构件的元数据文件获取所述元数据文件中的文件数据;依据所述获取的文件数据将所述构件封装为动态MBean (Manageable Bean,管理构件);将所述动态MBean注册为声明式框架服务;监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。
2.根据权利要求1所述的方法,其特征在于,对所述注册至MBena服务器中的MBean进行管理包括读取和重新改写MBean中的属性值;执行MBean中定义的接口方法;获取MBean中发出的通知事件对象。
3.根据权利要求1所述的方法,其特征在于,所述监听服务状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中包括 当监听得到所述服务状态改变且所述服务状态为服务加载时,将所述服务对应的 MBean注册至MBean服务器中。
4.根据权利要求1所述的方法,其特征在于,所述监听服务状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中包括当监听得到所述服务状态改变且所述服务状态为服务卸载时,将所述服务对应的 MBean反注册至MBean服务器中。
5.一种构件管理系统,其特征在于,所述系统基于一 JMX代理平台,所述JMX代理平台中设置有MBean服务器;所述系统包括加载单元,用于对所述构件进行加载;解析单元,用于解析所述构件的元数据文件获取所述元数据文件中的文件数据;封装单元,用于依据所述获取的文件数据将所述构件封装为动态MBean(Manageable Bean,管理构件);注册单元,用于将所述动态MBean注册为声明式框架服务;管理单元,用于监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的 MBean注册至所述MBean服务器中,对所述MBean进行管理。
6.根据权利要求5所述的方法,其特征在于,所述管理单元包括改写子单元,用于读取和重新改写MBean中的属性值;执行子单元,用于执行MBean中定义的接口方法;获取子单元,获取MBean中发出的通知事件对象。
7.根据权利要求5所述的方法,其特征在于,所述管理单元包括注册子单元,用于当监听得到所述服务状态改变且所述服务状态为服务加载时,将所述服务对应的MBean注册至MBean服务器中。
8.根据权利要求5所述的方法,其特征在于,所述管理单元包括反注册子单元,用于当监听得到所述服务状态改变且所述服务状态为服务卸载时,将所述服务对应的MBean反注册至MBean服务器中。
全文摘要
本申请公开了一种构件管理方法及系统,所述方法基于一JMX代理平台,所述JMX代理平台中设置有MBean服务器;所述方法包括对所述构件进行加载并解析所述构件的元数据文件获取所述元数据文件中的文件数据;依据所述获取的文件数据将所述构件封装为动态MBean(Manageable Bean,管理构件);将所述动态MBean注册为声明式框架服务;监听所述服务的状态,依据所述服务的不同状态,将所述服务对应的MBean注册至所述MBean服务器中,对所述MBean进行管理。本申请提供一种构件管理方法,无需构件实现特定接口而具备JMX管理能力,简化了开发过程;并且具备更新构件被管理的能力。
文档编号H04L29/08GK102325180SQ201110264398
公开日2012年1月18日 申请日期2011年9月7日 优先权日2011年9月7日
发明者刘民, 刘耀, 陈芳芳 申请人:山东中创软件商用中间件股份有限公司, 山东中创软件工程股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1