OSGi 部署管理服务的状态

2022-09-04 02:57:18

OSGi 应用程序由称为捆绑包的模块组成。问题在于,任何大小合理的应用程序都会有大量的捆绑软件(很容易有数百个,只需查看 Eclipse IDE 的插件目录),因此在管理或部署应用程序时,您希望比单个捆绑软件具有更粗糙的粒度。

OSGi Service Compendium Spec 包含一个部署管理服务,该服务将部署包定义为捆绑包和其他工件(如配置)的集合,这些工件可以作为单个单元进行部署、升级、卸载等。

遗憾的是,我找不到有关部署管理员实现、工具或用户的大量信息。

此服务的状态如何?是否有人对部署管理员有任何经验,意见或建议?

此外,Spring dm-server具有应用程序范围的捆绑包集合(PAR文件)的概念,我认为Eclipse Equinox正在研究嵌套框架来解决这个问题。这些方法与部署管理员有何关系?


答案 1

部署管理员是那些似乎引起相对较少关注的OSGi纲要服务之一。显然,有一个规范,因此大概是参考实现和一致性测试。Apache Felix项目贡献了一个实现,但似乎已经沉没得无影无踪。

在SpringSource dm Server中设计PAR文件支持时,我研究了部署管理员,但该模型不适合我们的用例。特别是,具有给定符号名称(以及任何版本)的捆绑包不得驻留在安装在同一 OSGi 框架中的两个不同的部署包中。

相反,在同一 dm Server 实例中安装的两个 PAR 文件可能都包含具有给定捆绑软件符号名称的捆绑软件(以及相同或不同的捆绑软件版本)。我们认为这是一个应用程序扩展要求:我们不希望大型应用程序仅仅因为它们的开发人员碰巧打包了相同的捆绑包而“碰撞”。服务也由 PAR 文件限定范围。

在 dm Server 2.0 中,我们将 PAR 的概念推广到“计划”中,这些计划是按类型名称和版本引用要安装的项目的文件。计划可以是有范围的(如PAR)或无作用域的,可以是原子的(意味着其内容的生命周期以原子方式与计划的液相联系,如PAR)或非原子的。

嵌套框架也正在被研究为可能的未来OSGi标准,以满足应用程序范围要求,但与dm Server范围的设计点相当不同。嵌套框架无法自动查看其父框架中的包和服务。因此,默认情况下,该模型是隔离的模型,无论是子框架彼此隔离还是子框架和父框架的隔离。dm Server 作用域特意将子项彼此隔离,但只在一个方向上将子项与其父项隔离开来:子项可以看到其父项的所有包和服务。


答案 2

您可能有兴趣知道Apache Ace(目前处于孵化和爬坡中)可以为部署管理员动态生成部署包,并使用(默认情况下,在配置OSGi目标时)Felix的部署管理员。

由于该网站正在开发中:Apache Ace是一个软件分发框架,允许您集中管理和分发软件组件,配置数据和其他工件到目标系统。它是使用OSGi构建的,可以部署在不同的拓扑中。目标系统通常也是基于OSGi的,但不必如此。


推荐