[发明专利]一种加载插件的方法及装置有效
申请号: | 201010163167.1 | 申请日: | 2010-04-08 |
公开(公告)号: | CN102214109A | 公开(公告)日: | 2011-10-12 |
发明(设计)人: | 陈锐渠 | 申请(专利权)人: | 深圳市金蝶中间件有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 何文彬 |
地址: | 518057 广东省深圳市南山区高*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 加载 插件 方法 装置 | ||
技术领域
本发明涉及计算机领域,特别涉及一种加载插件的方法及装置。
背景技术
在现实应用场景中,一个软件即使再庞大,也无法满足和覆盖所有需求。因而设置软件具有扩展功能,如此用户可以将自己所需要的功能模块加载到软件中。其中,功能模块可以以插件的形式存在。
目前采用Eclipse加载新插件。具体为:首先技术人员在Eclipse中配置新插件的部署描述符,其中,部署描述符用于描述新插件的各项属性,然后Eclipse再根据新插件的部署描述符加载新插件。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于需要技术人员配置部署描述符,使采用Eclipse加载新插件的方案带有浓烈的技术色彩,普通用户无法加载新插件,给使用带来不便,且该方案对Eclipse这个平台的依赖性很强。另外,当加载完插件后,必须重新初始化软件,加载的新插件才能运行。
发明内容
为了给用户使用带来方便以及加载新插件后可直接运行新插件并无需重新初始化,本发明提供了一种加载插件的方法及装置。所述技术方案如下:
一种加载插件的方法,包括:
当软件初始化时,加载扩展目录中的每个插件,将所述每个插件的相关信息存储在注册表中,所述相关信息至少包括插件的ID、接口描述信息、功能描述信息和类加载器;
实时监听所述扩展目录,如果监听出所述扩展目录中出现新插件;
将所述新插件包括的所有类加载到Java虚拟机中并激活所述新插件,根据所述新插件的相关信息更新所述注册表。
所述加载扩展目录中的每个插件,将所述每个插件的相关信息存储在注册表中,具体包括:
将所述扩展目录中存储的每个插件读取到内存中,为所述每个插件建立类加载器,通过所述每个插件对应的类加载器,将所述每个插件中包括的所有类加载到所述Java虚拟机中,并激活所述每个插件;
从所述每个插件中读取其自身的ID、接口描述信息和功能描述信息,将所述每个插件的ID、接口描述信息、功能描述信息和类加载器存储在所述注册表中。
所述实时监听所述扩展目录,如果监听出所述扩展目录中出现新插件,具体包括:
每隔一个周期从所述扩展目录中的第一个插件开始遍历,当遍历到插件时,从所述插件中获取其自身的ID,且从所述扩展目录中获取所述插件的修改时间;
查找插件ID与修改时间的对应关系中是否存在包括所述插件的ID的记录,如果不存在,则所述插件为新插件;如果存在,则判断所述获取的修改时间是否与所述记录中存储的修改时间相同,如果不相同,则所述插件为新插件。
如果所述新插件为新版本插件,所述将所述新插件包括的所有类加载到Java虚拟机中并激活所述新插件,根据所述新插件的相关信息更新所述注册表,具体包括:
从所述扩展目录中将所述新插件读取到内存中,为所述新插件建立类加载器,通过所述类加载器将所述新插件中包括的所有类加载到所述Java虚拟机中,并激活所述新插件;
从所述新插件中读取其自身的ID和接口描述信息,从所述注册表中查找所述新新件的ID对应的接口描述信息和类加载器;
将所述查找的接口描述信息和类加载器分别更新为所述读取的接口描述信息和所述建立的类加载器。
如果所述新插件为新功能插件,所述将所述新插件包括的所有类加载到Java虚拟机中并激活所述新插件,根据所述新插件的相关信息更新所述注册表,具体包括:
从所述扩展目录中将所述新插件读取到内存中,为所述新插件建立类加载器,通过所述类加载器将所述新插件中包括的所有类加载到所述Java虚拟机中,并激活所述新插件;
从所述新插件中读取其自身的ID、接口描述信息和功能描述信息,将所述新插件的ID、接口描述信息、功能描述信息和类加载器存储在所述注册表中。
如果监听出从所述扩展目录中删除插件,则所述方法还包括:
获取所述删除的插件的ID,从所述注册表中删除包括所述ID的记录,通过垃圾回收器回收所述删除的插件。
一种加载插件的装置,所述装置包括:
第一加载模块,用于当软件初始化时,加载扩展目录中的每个插件,将所述每个插件的相关信息存储在注册表中,所述相关信息至少包括插件的ID、接口描述信息、功能描述信息和类加载器;
实时监听模块,用于实时监听所述扩展目录,如果监听出所述扩展目录中出现新插件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市金蝶中间件有限公司,未经深圳市金蝶中间件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010163167.1/2.html,转载请声明来源钻瓜专利网。