org.osgi.core-1.4.0-project源码分析

org.osgi.core-1.4.0-project源码分析:

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

OSGI架构:

OSGi服务平台由两部分组成:OSGi框架和OSGi标准服务(如图1-3所示)。OSGi框架是实现并提供OSGi功能的运行环境,OSGi标准服务定义了很多用于执行常见任务(如日志和首选项)的可重用API

osgi框架的五个层次:

l 安全层 Security Layer

l 模块层 Module Layer

l 生命周期层 Life Cycle Layer

l 服务接口层 Service Layer

l 服务实现层 Actual Servic

各层之间的交互:

package org.osgi.framework代码的核心组成部分,提供了一个通用的、安全可管理的Java framework。通过 Framework可以支持一种叫做组件的Service application的部署和扩展。
  OSGI兼容设备可以下载并且安装OSGI组件,也可一旦不再需要的时候删除。组件安装后会注册一定数量的Services,并被由同一个Framework下的其它组件使用。
  在一个动态扩展的的OSGI环境中,Framework管理组件的安装和更新,同时也管理组件和Services之间的依赖关系。
  Framework提供给组件开发者必须的资源来在Java平台上开发,为开发的组件提供了代码 动态加载的功能, 也使得开发者开发、部署一个大规模的Services变的很容易。
  其次,Framework为Java组件开发者提供了简明一致的编程模型,简化了开发部署的复杂性。编程模型允许开发者将自己的接口规范绑定到OSGI环境中的Service。

.安全层

OSGi 安全层是 OSGi 服务框架的一个可选的层。它基于 Java 2 安全体系结构,提供了对精密控制环境下的应用部署和管理的基础架构。

与安全层有关的主要API

public final class AdminPermission extends BasicPermission
 描述调用者对 bundle 进行特殊的管理操作或者是获取 bundle 敏感信息的权限。
 描述调用者对 bundle 的管理操作或者获取信息的权限。


.模块层

OSGi 框架提供框架定义了模型化单元,称之为一个 bundle。一个 bundle java 的类和其他资源组成,可以为终端用户提供功能。通过良好定义的方式,Bundle 可以和导入(importer)及导出(exporter) Bundle 之间共享 Java 包。

OSGi 服务框架中,bundle 是仅有的需要部署的 Java 应用实体。

Bundle 的 描 述 信 息 在 一 个 manifest 文 件 中 , 在 JAR 文 件 中 的 META-INF 目 录 下 的MANIFEST.MF 文件。框架在 manifest 文件头中定义了 Export-Package Bundle-Classpath 这样的 OSGi manifest 头,bundle 的开发人员可以使用它们提供 bundle 的描述信息。

三.生命周期层

生命周期层提供了 bundle 的生命周期管理和安全控制的 API。本层是建立在在模型和安全层之上。

与生命周期层有关的主要API

Bundle — 框架中的安装完毕的 bundle

BundleContextbundle 上下文) — bundle 在框架中的执行上下文环境。当启动或者

停止一个 bundle 的时候,框架将它发送到一个 bundle 的激活器(Bundle Activator)。

BundleActivatorbundle 激活器) 用于启动和停止 bundle 的,在 bundle 中实现的

一个接口。

BundleEventbundle 事件) bundle 内用于标志一个生命周期操作的事件。通过

bundle 的监听器来接收(同步)这样的事件。

FrameworkEvent(框架事件)标志错误或者框架状态改变的事件。通过框架的监

听器来接收框架事件。

BundleListenerbundle 监听器) — bundle 事件的监听器。

SynchronousBundleListener(同步 bundle 监听器) 同步传送 bundle 事件的监听器。

FrameworkListener(框架监听器) 框架事件的监听器。

BundleExceptionbundle 异常) 当框架错误错误时抛出的异常。

SystemBundle(系统 bundle框架声明的 bundle

 

bundle 可以处于以下状态中的一种:

l INSTALLED — 成功安装 bundle

l RESOLVED — 所有 bundle 需要的 Java 类都准备好了。这个状态标志着 bundle 已经是

启动就绪或者是已经停止。

l STARTING — 正在启动 bundle。调用了 bundle 激活器的 start 方法,而且还没有从方法

中返回。

l ACTIVE — bundle 已经启动完毕,正在运行中。

l STOPPING — 正在停止 bundle。调用了 bundle 激活器的 stop 方法,而且还没有从方法

中返回。

l UNINSTALLED — bundle 已经卸载完毕,不能进入其他状态.

原文地址:https://www.cnblogs.com/ku1274755259/p/11108511.html