OSGi简介:
OSGi全称Open Service Gateway Initiative是一种服务运行平台。发布符合OSGi规范的组件。OSGi组件提供两个层面的服务含义:系统层面,为其他组件提供接口服务;业务层面,为外部系统提供业务服务。
OSGi功能:
传统多应用发布情景下,A应用调用B应用的接口需要引入B应用相应jar包到A应用运行空间中,重启应用服务器,将B应用jar包加载至运行环境。而OSGi规范下各应用已Bundle组件发布,可以动态加载所需Bundle组件的jar包。
OSGi实现机制:
Bundle A组件调用Bundle B组件。
首先,Bundle B将元数据描述信息通过OSGi平台公布;
其次,Bundle A在元数据描述信息中引入相应版本的Bundle B公开类;
最后,在运行时OSGi平台将Bundle B的公开类实例化,供Bundle A调用;
OSGi缺点:
Bundle粒度需要把控,高于interface低于业务服务,需要设计粒度。最好能提供JVM层实现,应用层上添加OSGi需要设计。
目前情况下适合嵌入式开发,企业级开发OSGi不成熟,主流Web服务器的最新版才支持。相比Maven+SOA没有明显优势,Bundle组件多时,也需要配套开发、打包、测试支持件。
这是对OSGi简单介绍,关于OSGi的具体应用和设计组成,日后待补。
OSGi是值得学习研究的,Apache Felix、Eclipse Equinox(完全按照R4规范而来)