[发明专利]基于OSGi的服务转换方法和装置有效
申请号: | 201110086817.1 | 申请日: | 2011-04-07 |
公开(公告)号: | CN102158490A | 公开(公告)日: | 2011-08-17 |
发明(设计)人: | 刘鹏;刘春 | 申请(专利权)人: | 山东中创软件商用中间件股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 osgi 服务 转换 方法 装置 | ||
技术领域
本发明涉及网络及计算机技术领域,更具体的说,是涉及一种基于OSGi的服务转换方法和装置。
背景技术
OSGi(Open Service Gateway Initiative,公共服务平台)是一种基于Java语言的服务(业务)平台规范。该服务平台为一种室内、交通工具、移动终端和其他环境下的所有类型的网络设备的应用程序和服务进行传递和远程管理的开放式平台。该规范的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。并且OSGi强调模块化与服务化,技术人员可以在基于OSGi应用的情况下切换服务,实现动态更新的目的。在OSGi框架还包含一套编程式的服务装置,它能够提供服务的发布、查找和绑定操作。这个模型还可以使相关应用通过服务方式同外部的Bundle进行通讯和协作。现有的OSGi服务平台的应用包括:服务网关、汽车、移动电话、工业自动化、建筑物自动化、PDA网格计算、娱乐和IDE等需要长时间运行、动态更新并且对运行环境的影响尽可能小的系统。
在现有技术中,采用OSGi的微核结构可以保证组件开发的过程中,组件和扩展是独立且可控的,并且在组件开发的过程中可以解决应用于小型的系统中的依赖跟踪、版本跟踪和服务绑定的问题。
但是,当OSGi的服务平台应用于大型的系统和大范围的部署时,其采用的现有的编程式服务装置会引发性能和兼容性方面的问题:其一,启动时间较长,OSGi中的编程式服务装置需要Bundle主动地注册服务和获取服务,注册的这些静态服务都需要在启动时执行,需要Bundle在其激活器中执行初始化。应用于大型的系统时,会使系统启动的时间变长,使启动速度变慢;其二,内存被占用,服务提供者无法按需分配服务占用的资源,当一个服务被注册到OSGi框架时,实现服务的相关类都被实例化,被加载到了内存中,如果该服务从不使用,会一直占用内存;其三,在管理服务的发布、解除、发现、并跟踪服务等非功能性需求时较为复杂,这种复杂性会对开发架构的应用起消极的影响,不能保证所有的动态处理都处于正确状态。
发明内容
有鉴于此,本发明提供了一种基于OSGi的服务转换方法和装置,以克服现有技术中由于OSGi中的服务装置的缺陷,在OSGi的服务平台应用于大型系统或大范围的部署时,容易引发性能和兼容性的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于OSGi的服务转换方法,包括:
进行编码,基于DService框架的项目管理模块maven增加元数据内容,并织入构件实现类;
当OSGi平台启动时,在DService框架中对构件实例的元数据进行配置,在OSGi的Bundle中声明组件构件实例的方面构件;
读取宿主实例对所述方面实例的元数据和宿主实例配置信息;
初始化方面构件工厂和方面实例,启动构件实例中的方面实例,获取valid或invalid两种状态中任一状态的方面实例;
当构件实例状态进行切换时,遍历通知所述构件实例中拥有的方面实例更改状态;
与构件实现类实例化的对象POJO进行交互,直接通过元数据获取宿主构件的类型信息,由确定状态的方面实例为宿主实例的字段注值。
优选地,所述声明组件实例的方面构件包括:为所述方面构件声明唯一的XML命名空间和名称。
优选地,包括:一个所述Bundle中声明多个组件实例的方面构件;
当一个所述Bundle中声明多个组件实例的方面构件时声明服务构件使用该方面构件。
优选地,初始化方面构件工厂的过程包括:
当DService框架检测到Bundle启动、所述Bundle配置有DService元数据,以及所述元数据中声明有通过DService根节点名称和XML命名空间确定唯一的方面构件时,DService框架查找Bundle中的方面构件实现类,由工厂创建用于调用initializeComponentFactory方法所对应的临时方面构件对象;
输入构件实例中声明的方面构件元数据。
优选地,初始化方面构件工厂完成后,进行初始化方面实例的过程包括:
DService框架为每一个构件实例创建所配置的方面实例;
调用方面实例的configure方法,输入构件定义的元数据,完成方面实例的初始化。
优选地,启动构件实例中的方面实例,获取Valid和Invalid两种状态中任一状态的方面实例的过程包括:
调用start方法之前,启动方面实例中的所有声明需要的子方面实例;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东中创软件商用中间件股份有限公司,未经山东中创软件商用中间件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110086817.1/2.html,转载请声明来源钻瓜专利网。