OSGi入门篇:<mark>生命周期</mark>层

生命周期层一个很明显的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或者两者的结合),并且给予应用很大的动态性。这一章里,我们将带你熟悉生命周期层的基本特性和如何有效的使用这些特性。当然按照惯例,我们依然会先讲清楚什么是生命周期管理以及OSGi需要生命周期管理的原因,然后再讲解生命周期层的一些基本内容。


OSGi入门篇:服务层

到现在为止,我们已经了解了OSGi框架的下面两层,而作为OSGi框架中最上面的一层,服务层带给了我们更多的动态性,并且使用了大家或多或少都曾了解过的面向服务编程模型,其好处是显而易见的。 这里我们依然会讲解什么是服务层和服务层对于OSGi框架的意义,此外,还将告诉大家什么时候应该使用服务,什么时候不应该使用。最后将会是OSGi服务层的一些基础,包括如何定义、注册和发现服务。


OSGi Compendium服务概览

除了OSGi 核心标准(core specification)中的服务,OSGi联盟也定义了一组非核心的(non-core)标准服务,称为compendium服务。Core服务在任何运行的OSGi框架内都是可用的,这要求所有的OSGi框架都要实现核心服务。而compendium服务则不然。这些服务以分离的bundle的形式出现,由框架实施者或者第三方实现并提供,能在任何框架上运行。


模式9:Published Interface

让参与者都清楚的知道你的模块所发布的接口。 众所周知(也是老生常谈):一个模块应该封装了它的实现细节。所以理想情况下一个模块会暴露其API来作为其它模块与其交互的方式,而且这些API应该易于理解。


OSGi R4服务平台核心规范 :第五章 服务层(1)

OSGi服务层定义了一个和生命周期层紧密结合的动态协作模型。服务模型包括发布、查找和绑定模型。一个服务(service)就是一个通过服务登记来注册到一个或者多个Java接口下的Java对象。bundle可以注册服务,查找服务,接收注册服务的状态改变信息。


OSGi R4服务平台核心规范 :第五章 服务层(2)

框架提供了一个Filter接口,并且在方法getServiceReferences中使用过滤器语法(在过滤器语法一节中定义)。通过调用BundleContext的方法createFilter(String)或者是FrameworkUtil的方法createFilter(String)来创建一个Filter对象,


OSGi R4服务平台核心规范 :第七章 包管理服务规范(1)

bundle可以将包提供给其他bundle。这种导出建立了导出包的bundle和使用导出包的bundle之间的依赖关系。当对导出包的bundle进行卸载或者更新,那么需要对它共享的包进行决策处理。 Package Admin服务给管理代理提供了这种决策的接口。


OSGi R4服务平台核心规范 :第八章 启动平台服务规范

本章规范描述了在OSGi服务平台下,如何实现管理代理对启动和停止bundle的顺序进行控制。启动级别服务给每一个bundle分配一个启动级别(start level)。管理代理可以修改bundle的启动级别,并通过设置框架激活启动级别(active start level)来启动和停止相关的bundle。只有启动级别小于或者等于激活启动级别的bundle才可以激活。


OSGi中的服务模式与扩展者模式

  在OSGi中,服务模型和扩展者模型是实现bundle间交互和扩展性的常用手段,最近在Stackoverflow上出现了关于这两种方式利弊和适用场景的讨论,OSGi的资深专家 Peter Kriens和Neil Bartlett对此进行细致的阐述。