[发明专利]基于OSGi的服务转换方法和装置有效
申请号: | 201110086817.1 | 申请日: | 2011-04-07 |
公开(公告)号: | CN102158490A | 公开(公告)日: | 2011-08-17 |
发明(设计)人: | 刘鹏;刘春 | 申请(专利权)人: | 山东中创软件商用中间件股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 osgi 服务 转换 方法 装置 | ||
1.一种基于OSGi的服务转换方法,其特征在于,包括:
进行编码,基于DService框架的项目管理模块maven增加元数据内容,并织入构件实现类;
当OSGi平台启动时,在DService框架中对构件实例的元数据进行配置,在OSGi的Bundle中声明组件构件实例的方面构件;
读取宿主实例对所述方面实例的元数据和宿主实例配置信息;
初始化方面构件工厂和方面实例,启动构件实例中的方面实例,获取valid或invalid两种状态中任一状态的方面实例;
当构件实例状态进行切换时,遍历通知所述构件实例中拥有的方面实例更改状态;
与构件实现类实例化的对象POJO进行交互,直接通过元数据获取宿主构件的类型信息,由确定状态的方面实例为宿主实例的字段注值。
2.根据权利要求1所述的方法,其特征在于,所述声明组件实例的方面构件包括:为所述方面构件声明唯一的XML命名空间和名称。
3.根据权利要求1所述的方法,其特征在于,包括:一个所述Bundle中声明多个组件实例的方面构件;
当一个所述Bundle中声明多个组件实例的方面构件时声明服务构件使用该方面构件。
4.根据权利要求1所述的方法,其特征在于,初始化方面构件工厂的过程包括:
当DService框架检测到Bundle启动、所述Bundle配置有DService元数据,以及所述元数据中声明有通过DService根节点名称和XML命名空间确定唯一的方面构件时,DService框架查找Bundle中的方面构件实现类,由工厂创建用于调用initializeComponentFactory方法所对应的临时方面构件对象;
输入构件实例中声明的方面构件元数据。
5.根据权利要求1所述的方法,其特征在于,初始化方面构件工厂完成后,进行初始化方面实例的过程包括:
DService框架为每一个构件实例创建所配置的方面实例;
调用方面实例的configure方法,输入构件定义的元数据,完成方面实例的初始化。
6.根据权利要求1所述的方法,其特征在于,启动构件实例中的方面实例,获取Valid和Invalid两种状态中任一状态的方面实例的过程包括:
调用start方法之前,启动方面实例中的所有声明需要的子方面实例;
调用start方法之后,检测方面实例的当前状态,当所述方面实例中使用的所有的子方面实例状态为Valid,则所述方面实例的状态为Valid;
当所述方面实例中使用的所有子方面实例状态有一个为invalid,则所述方面实例的状态为Invalid。
7.根据权利要求1所述的方法,其特征在于,当方面实例状态进行切换时,遍历通知所述构件实例中拥有的方面实例更改状态的过程包括:
当构件实例的状态从Invalid变为Valid时,遍历通知所述构件实例中拥有的方面实例改变状态为Valid;
当构件实例的状态从Valid变为Invalid时,遍历通知所述构件实例中拥有的方面实例改变状态为Invalid。
8.根据权利要求1所述的方法,其特征在于,还包括:
当构件实例停止时,所述构件实例的所有方面构件调用stop方法,进入停止状态。
9.根据权利要求1所述的方案,其特征在于,在与构件实现类实例化的对象POJO进行交互的过程中,还包括:
当宿主实例的POJO对象中的公共方法被调用前或后,出现错误时,由方面实例拦截所述宿主实例的所有公共方法。
10.一种基于OSGi的服务转换装置,其特征在于,包括:
编码织入模块,用于进行编码,基于DService框架的项目管理模块maven增加元数据内容,并织入构件实现类;
配置声明模块,用于在OSGi平台启动时,在服务构件元数据中对构件实例进行配置,声明组成构件实例的方面构件;
读取模块,用于读取宿主实例对所述方面实例的元数据和宿主实例配置信息;
初始模块,用于初始化方面构件工厂和方面实例,启动构件实例中的方面实例;
获取模块,用于获取Valid和Invalid两种状态的方面实例;
切换模块,用于当所述Valid和Invalid两种状态的方面实例进行切换时,遍历通知所有构件实例中拥有的方面实例更改状态;
注值模块,用于与构件实现类实例化的对象POJO进行交互,直接通过元数据获取宿主构件的类型信息,由确定状态的方面实例为宿主实例的字段注值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东中创软件商用中间件股份有限公司,未经山东中创软件商用中间件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110086817.1/1.html,转载请声明来源钻瓜专利网。