OSGi 体系结构

OSGi Service Platform 的核心部件定义了基于 Java™ 的安全且受管的服务平台。此平台支持部署可扩展且可下载的应用程序(称为捆绑软件)。 该规范定义了安全模型、应用程序生命周期管理模型、服务注册表、执行环境以及模块。

OSGi 定义 Java 的动态模块系统。核心 OSGi Service Platform 具有分层体系结构,旨在于各种标准 Java 概要文件上运行。OSGi 引入了捆绑软件作为模块化单元概念,平台体系结构基于作为部署单元的捆绑软件。OSGi 体系结构具有以下层:
执行环境层
模块层
生命周期层
服务注册表层
有关 OSGi 体系结构的更多信息,请参阅核心 OSGi Service Platform 规范

执行环境层

执行环境层指定在其中运行捆绑软件的 Java 环境(例如 Java EE 或 Java SE)。对于运行在 WebSphere® Application Server 中的 OSGi 应用程序,不需要指定执行环境。

模块层

模块层是 OSGi 框架用于处理捆绑软件的模块化方面的位置。用来允许 OSGi 框架处理捆绑软件的元数据在捆绑软件清单文件中进行设置。

OSGi 的其中一个关键优势是,它的类装入器模型使用清单文件中的元数据。OSGi 没有全局类路径。将捆绑软件安装在 OSGi 框架中时,元数据将由模块层进行处理,并针对由其他已安装模块声明的版本化导出来调整所声明的外部依赖关系。OSGi 框架通过使用清单来确定依赖关系,并计算每一个捆绑软件的独立必需类路径。此方法通过确保满足以下需求来解决普通 Java 类装入的缺点:
  • 仅限由特定捆绑软件显式导出的软件包才能通过元数据对其他捆绑软件可视以进行导入。
  • 每一个软件包都可以解析为特定的版本。
  • 软件包的多个版本可同时用于不同的客户机。

生命周期层

OSGi 中的捆绑软件生命周期管理层会在运行时移除某些问题,如 Java 类装入文件以及找不到类异常,在那种情况下,因为找不到相依类,所以无法将其导入。将已安装的捆绑软件部署到框架中时,该框架先解析它的所有已声明的依赖关系。如果有未解析的依赖关系,那么框架会报告这些依赖关系并且不启动捆绑软件。

在捆绑软件生命周期中:
  • 捆绑软件是动态的,并且可独立于框架的其他部分进行启动和停止。
  • 每一个捆绑软件都可以提供一个捆绑软件激活器,以供框架在启动和停止事件中调用。捆绑软件激活器将在捆绑软件清单中进行声明。

应用程序通常不需要提供捆绑软件激活器。 但是,如果在捆绑软件启动或停止时需要初始化,就可以创建捆绑软件激活器。

服务注册表层

OSGi 中的服务注册表层从实质上支持面向服务的体系结构 (SOA)。捆绑软件将服务发布到服务注册表,其他捆绑软件可以从服务注册表发现这些服务。

这些服务是捆绑软件之间协作的主要方式。OSGi 服务是一个无格式普通 Java 对象 (POJO),发布到一个或多个 Java 接口名称下面的服务注册表,并将可选元数据作为定制属性(“名称/值”对)进行存储。发现捆绑软件会在服务注册表中按接口名称查找服务,然后可以通过使用定制属性潜在地过滤服务。

服务是完全动态的,通常与用于提供这些服务的捆绑软件具有相同的生命周期。

指示主题类型的图标 概念主题
信息中心的条款和条件 | 反馈

时间戳记图标 最近一次更新时间: 2014 年 4 月 17 日

文件名:cosgiarchitecture.html