OSGI学习笔记

最近由于需要,接触了一点OSGI,由于我也是刚入门,所以写点心得和大家分享:

名词:bundle-和普通的jar文件没有什么区别,只是多了一个MANIFEST.MF原数据文件来描述bundle的一些信       息、依赖、行为等。

OSGI核心Core Framework :

包括四个部分:服务注册、生命周期管理,models和运行环境。

  • 最中间的就是bundles运行所需的最小运行环境。
  • Life Cycle负责bundles的生命周期管理,如bundle的动态安装、启动、停止、更新和卸载等。
  • ServiceRegistry则是bundle的服务注册。
  • Modules则提供了强大的ClassLoader机制,在java中一般是由一个ClassLoader来加载所有的类和资源,而在OSGI中则是为每一个bundle提供单独的ClassLoader,OSGI的ClassLoader机制还提供了根据属性、版本等过滤的功能。

OSGI中bunlder间的通信方式有两种:1.export/import 2.服务注册方式。

OSGI可以使项目完全松偶合,一种很好的架构,以framework为核心,可挂接很多bundle,bundle间还能共享资源,这样项目不管在开发,调试,找错,架构上来说都相当的清晰,但是目前对B/S支持还是不够的,只支持HTML,虽然现在已经支持JSP,但是还不成熟。

eclipse从3.0开始就把地层的插件架构换成了OSGI,大家可以看到它的强大。

OSGI就相当于一个运行环境,只有挂接在它上面的bundle都启动了,才能访问到bundle中的资源,最近在我做的RCP产品在eclipse工程中通过配置可以实现动态加载,而导出成产品后就找不到,要改产品的ini文件,昨天突然想通了,因为在eclipse里通过配置启动了bundle,而导出后bundle因为级别的问题没有启动,即便是读到了MANIFEST.MF文件,在ClassLoader时也找不到类。

framework可以动态的管理bundle的生命周期,所以可以达到动态的改变一些服务而不用重启服务器。来实现真正的动态加载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值