java bundle管理_架构设计——OSGI规范

架构设计——OSGI简介

一、OSGI简介

1、OSGI简介

OSGI(Open Service Gateway Initiative),即开放服务网关协议,是面向Java的动态模型系统。

OSGI是指由OSGI Alliance组织制定的Java模块化规范,OSGI规范的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。基于OSGI框架定义了大量的OSGI服务:日志、配置管理,HTTP服务(运行Servlet)、XML解析、设备访问、软件包管理、许可管理、用户管理、IO连接、Jini和UPnP等。

OSGI中文社区:http://www.osgi.com.cn/

OSGI官方网站:https://www.osgi.org/

OSGI框架实现了一个优雅、完整和动态的组件模型,组件(bundle)无需重新引导可以被远程安装、启动、升级和卸载。

OSGI服务平台提供在多种网络设备上无需重启的动态改变构造的功能。

为了最小化耦合度和促使耦合度可管理,OSGI技术提供了一种面向服务的架构,使组件动态地发现对方。

OSGI联盟已经开发了如HTTP服务器、配置、日志、安全、用户管理、XML等很多公共功能标准组件接口。标准组件的兼容性插件实现可以从不同计算机服务提供商得到。

OSGi的主要职责就是为了让开发者能够创建动态化、模块化的Java系统。

2、OSGI规范的组成

OSGI规范包括以下子规范:

A、Framework规范(OSGI核心,提供一个安全的可管理的Java Framework来部署可扩展的Java服务)

B、Package Admin Service规范(管理不同的Bundle之间的引用关系。当Bundle更新或者卸载时判断是否有其它的服务正在使用当前的Bundle)

C、Start Level规范(定义了启动和停止一个OSGi Service Platform时,不同的Bundles的启动或者停止的先后顺序)

D、Permission Admin Service规范(Bundle是否许可执行另外的Bundle的代码)

E、URL Handlers Service规范(怎样注册URL Schema,如何将java.io.InputStream对象转换为特定的Java对象)

F、Log Service规范

G、Configuration Admin Service规范

H、Device Access Specification

I、User Admin Service Specification

J、IO Connector Service Specification

K、Http Service Specification

L、Preference Service Specification

M、Wire Admin Service Specification

N、XML Parser Service Specification

O、Metatype Specification

P、Service Tracker Specification

Q、Measurment and State Specification

R、Position Specification

S、Execution Environment Specfication

3、OSGI的优点

OSGI的优势主要表现在以下几个方面:

A、热插拔的插件体系结构

基于OSGI的应用程序可动态更改运行状态和行为。在OSGI框架中,每一个组件都是可热插拔的,因此,对某一特定的组件的修改并不会影响到容器中的所有组件,运行中的大部分组件依旧能照常工作,部署一个新的Bundle时也不需要重新启动服务器。

B、可复用性

OSGI框架本身可复用性极强,易于构建真正面向接口的程序架构,每一个组件(Bundle)都是一个独立可复用的单元。基于OSGI独特的特性,进行企业开发的时候,对于新的开发,可以从企业的组件库中精简出可复用的模块,量身定做新的组件,最大限度的利用了已有的资源,降低开发成本,增强企业的竞争力。

C、高效性,稳定性

OSGI是一个稳定而高效的系统。OSGI作为一个微核的系统,其核心只有为数不多的几个JAR包。基于OSGI框架的系统的低耦合性,其结构的优势性保证具体的某一个组件不至于影响到全局,更不会因为局部的错误导致全局系统的崩溃。

4、OSGI的缺点

A、每个组件(Bundle)都由单独的类加载器加载,与一些Java EE项目中使用比较多的框架整合比较困难,如Spring MVC、Struts2等。

B、目前OSGI框架提供的管理端不够强大,现在的管理端中仅提供了基本的组件状态管理、日志查看等功能,像动态修改系统级别的配置(config.ini)、动态修改组件的配置(Manifest.mf)、启动级别等功能都尚未提供。

C、采用OSGI作为规范的模块开发、部署方式自然给现有开发人员提出了新的要求,需要学习新的基于OSGI的开发方式。

二、OSGI框架原理

1、OSGI框架简介

OSGI框架从概念上可以分为三层:模块层、生命周期层和服务层。

Module Layer:模块层主要涉及包及共享的代码;

Lifecycle Layer:生命周期层主要涉及组件的运行时生命周期管理;

Service Layer:服务层主要涉及模块之间的交互和通信。

abd754e9063e19076098d08d447bd6fb.png

OSGI Framework是OSGI Service Platform规范的核心组成部分,提供了一个通用的、安全可管理的Java framework。通过OSGI Framework可以支持一种叫做组件的Service application的部署和扩展。

OSGI兼容设备可以下载并且安装OSGI组件,也可一旦不再需要的时候删除。组件安装后会注册一定数量的Services,并被由同一个Framework下的其它组件使用。

在一个动态扩展的的OSGI环境中,Framework管理组件的安装和更新,同时也管理组件和Services之间的依赖关系。

Framework提供给组件开发者必须的资源来在Java平台上开发,为开发的组件提供了代码动态加载的功能, 也使得开发者开发、部署一个大规模的Services变的很容易。

其次,Framework为Java组件开发者提供了简明一致的编程模型,简化了开发部署的复杂性。编程模型允许开发者将自己的接口规范绑定到OSGI环境中的Service。

一个一致的编程模型帮助开发者可以应付一些可估计的危急错误。Framework将会运行在不同的硬件环境上,但一致的接口确保组件可以运行在一致的服务接口上。

2、模块层

模块层是OSGi框架中最基础的部分。

OSGi的模块化,是通过为Jar包添加metadata 来定义哪些类该暴露,哪些类该隐藏,其控制单元叫做组件Bundle(jar包)。

Bundle是以jar包形式存在的一个模块化物理单元,包含代码、资源文件和元数据(metadata),并且jar包的物理边界也是运行时逻辑模块的封装边界。

Bundle是OSGi中的基本组件,其表现形式仍然为Java概念中传统的Jar包。

通过META-INF目录下的MANIFEST.MF文件对其予以进一步的定义。

通常一个MANIFEST.MF文件的内容如下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值