bundle自动更新

      OSGi的最大优点就是能实现热部署(hot deployment),所谓热部署,就是在不停止服务运行的情况下(或者说在不影响用户体验前提下)动态更新其服务内容(和硬件领域的热插拔的概念很类似)。上篇bundle动态更新文章中,我们知道了如何在手动更新bundle(通过update,refresh,install等功能),现在有个新问题:如果对某个bundle需要更新时,需要手动把这个新版本的bundle拷贝到原来bundle的目录下,然后在手动在OSGi框架下手动点击update,refresh等按键进行更新。对于需要频繁更新bundle或者更新的bundle数量比较多的场合,未免太麻烦了,有没有办法让系统自动检测bundle更新情况,并安装运行,从而实现系统真正意义上的自动运行呢。

     其实,各个OSGi框架都提供了相应的bundle来是实现这个功能(Apache Felix下的File Install; Knopflerfish 下的 Directory Deployer)。使用非常简单,以Directory Deployer为例说明如何应用

     1:在Knopflerfish目录下新建名为文件夹load。将需要运行的各bundle拷贝至该文件夹中。

     2:运行Knopflerfish,将Directory Deployer bundle导入并执行。

     3:当我们要批量更新自己部署的bundle时,只需将新版本复制到load文件夹中,系统将会以固定周期扫描该文件夹里的bundle,对比版本后,自动完成更新。


注:(load文件夹和 扫描周期可以自定义,只需修改Deployer包中metatype.xml文件的如下两个属性(默认设置为load 文件夹, 周期为1000ms)。

<org.knopflerfish.fileinstall.dir> ./load</org.knopflerfish.fileinstall.dir>

<org.knopflerfish.fileinstall.poll> 1000</org.knopflerfish.fileinstall.poll>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值