OSGi应用程序由称为bundle的模块组成。问题是,任何合理大小的应用程序都会有大量的捆绑包(很容易就是数百个,只需查看Eclipse IDE的plugins目录),这样在管理或部署应用程序时,您需要比单个捆绑包更粗糙的粒度。
OSGi Service Compendium Spec包含一个Deployment Admin Service,它将部署包定义为可以作为一个单元部署,升级,卸载等的bundle和其他工件(例如配置)的集合。
不幸的是,我找不到有关Deployment Admin实施,工具或用户的更多信息。
这项服务的状态如何? 有没有人对Deployment Admin有任何经验,意见或建议?
另外,我认为Spring dm-server具有捆绑应用程序范围集合(PAR文件)的概念,Eclipse Equinox正在研究嵌套框架以解决这个问题。这些方法如何与Deployment Admin相关?
答案 0 :(得分:10)
部署管理员是OSGi纲要服务之一,似乎吸引了相对较少的关注。显然,有一个规范,因此可能是一个参考实现和一致性测试。一个实现是为Apache Felix项目做出贡献的,但似乎几乎没有任何痕迹。
在SpringSource dm Server中设计PAR文件支持时,我查看了Deployment Admin,但该模型不适合我们的用例。特别是,具有给定符号名称(和任何版本)的bundle可能不会驻留在安装在同一OSGi框架中的两个不同的Deployment Packages中。
相比之下,安装在同一dm Server实例中的两个PAR文件都可能包含具有给定包符号名称(以及相同或不同的包版本)的包。我们将此视为应用程序扩展要求:我们不希望大型应用程序“碰撞”只是因为他们的开发人员碰巧打包了相同的捆绑包。服务也由PAR文件限定。
在dm Server 2.0中,我们将PAR的概念概括为“计划”,这些计划是按类型名称和版本引用要安装的工件的文件。计划可以是作用域(如PAR)或未作用域,并且可以是原子的(意味着其内容的生命周期与计划的生命周期(如PAR)原子性相关)或非原子的。
嵌套框架也正在作为未来可能的OSGi标准进行调查,以满足应用程序范围要求,但设计点与dm服务器范围截然不同。嵌套框架无法在其父框架中自动查看包和服务。因此,默认情况下,模型是隔离模式,无论是相互隔离子框架还是隔离子框架和父框架。 dm服务器范围故意将儿童彼此隔离,但仅在一个方向上将儿童与其父母隔离:儿童可以看到其父母的所有包裹和服务。
答案 1 :(得分:6)
您可能有兴趣知道Apache Ace(目前处于孵化和提升阶段)可以为Deployment Admin动态生成部署包,并使用(默认情况下,在配置到OSGi目标时)Felix的部署管理员。
由于网站正在开发中:Apache Ace是一个软件分发框架,允许您集中管理和分发软件组件,配置数据和其他工件到目标系统。它是使用OSGi和 可以部署在不同的拓扑中。目标系统通常也是基于OSGi的,但不一定是。