14

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

OSGi 服务纲要规范包含一个部署管理服务,它将部署包定义为捆绑包和其他工件(例如配置)的集合,可以作为一个单元进行部署、升级、卸载等。

不幸的是,我找不到很多关于部署管理实施、工具或用户的信息。

该服务的状态如何?有人对部署管理员有任何经验、意见或建议吗?

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

4

2 回答 2

10

Deployment Admin 是那些似乎很少受到关注的 OSGi 纲要服务之一。显然有一个规范,因此可能是一个参考实现和一致性测试。为 Apache Felix 项目贡献了一个实现,但似乎已经沉没了。

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

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

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

嵌套框架也正在作为未来可能的 OSGi 标准进行研究,以解决应用程序范围要求,但与 dm 服务器范围的设计点完全不同。嵌套框架无法自动查看其父框架中的包和服务。因此该模型默认是一种隔离,无论是子框架彼此隔离还是子框架和父框架隔离。dm 服务器范围故意将子级彼此隔离,但仅在一个方向上将子级与其父级隔离:子级可以看到其所有父级的包和服务。

于 2009-06-01T11:12:33.800 回答
6

You might be interested to know that Apache Ace (which is currently in incubation and ramping up) can dynamically generate deployment packages for Deployment Admin, and uses (by default, when provisioning to OSGi target) Felix's Deployment Admin.

Since the website is very much under development: Apache Ace is a software distribution framework that allows you to centrally manage and distribute software components, configuration data and other artifacts to target systems. It is built using OSGi and can be deployed in different topologies. The target systems are usually also OSGi based, but don't have to be.

于 2009-06-01T12:46:33.237 回答