如何在更新捆绑包OSGI时保持服务/组件网运行

如何在更新捆绑包OSGI时保持服务/组件网运行,osgi,bundle,apache-felix,declarative-services,Osgi,Bundle,Apache Felix,Declarative Services,我在包中实现了两个服务A、B。我想通过构建一个新的jar文件和do update命令来更改服务A的代码,但不必再次启动服务B即可保持服务B的运行。听起来好像一个捆绑包中有两个服务。部署单元是一个捆绑包,因此我建议将这两个服务分成两个捆绑包。否则,取消部署现有捆绑包自然也会破坏服务B 或者,如果API/接口驻留在单独的捆绑包中,您可以在单独的捆绑包中部署一个新的服务实现,具有更高的优先级,并重新连接服务的所有使用。这通常是相当混乱的,所以这是一个遥远的第二位的建议 编辑:您评论说您正在将服务合并到

我在包中实现了两个服务A、B。我想通过构建一个新的jar文件和do update命令来更改服务A的代码,但不必再次启动服务B即可保持服务B的运行。

听起来好像一个捆绑包中有两个服务。部署单元是一个捆绑包,因此我建议将这两个服务分成两个捆绑包。否则,取消部署现有捆绑包自然也会破坏服务B

或者,如果API/接口驻留在单独的捆绑包中,您可以在单独的捆绑包中部署一个新的服务实现,具有更高的优先级,并重新连接服务的所有使用。这通常是相当混乱的,所以这是一个遥远的第二位的建议

编辑:您评论说您正在将服务合并到一个捆绑包中以最小化JAR的数量,但您希望独立地更新服务。特别是为了尽量减少罐子的数量:您是否正在尝试解决您确实遇到的问题?我主要使用Liferay,它是完全OSGi的,一个普通的安装附带了1000多个捆绑包——运行时处理得很好。确保你没有先发制人地优化那些不需要优化的东西


如果您的组件有不同的维护间隔,那么将它们部署到不同的捆绑包中。时期在系统上工作没有用,因为系统中的进程太多了,所以捆绑包的数量根本没有问题。

我的主要想法是在一个文件jar捆绑包中部署多个进程/作业。例如,如果我的系统有70-100个进程/作业,我需要部署70-100个jars包,我认为这种方法很难实现和监控。因此,我想将这些进程划分为一些组合包,包A中有15个进程,包B中有15个进程,依此类推。但是,同一个包中的进程可以独立更新。经过研究,我决定使用OSGI服务作为我的流程,这意味着我使用OSGI服务来启动和停止我的流程,并且它似乎运行良好。你对我的想法有什么想法OSGI方法吗?我提出了一些问题,但没人能帮上忙。请点击下面的链接或者直接回复我,最后的评论实际上是一个新的问题,而不是澄清。一个项目中的多个捆绑包可以解决什么问题?听起来很像一场比赛。eclipse可以处理的项目没有限制,OSGi运行时可以处理的包的数量也没有限制。决定您的项目是相互独立还是捆绑在一起形成一个单元,然后执行您的决定。但是,做一个决定,不要因为你最初的想法不同而试图与体制抗争。