我有一种情况,其中系统中安装时,有几个服务被部署到OSGi容器和这些服务将监听提供数据,并且动态地安装和运行时,卸载其它束。

这些数据供应商不暴露任何服务和应该甚至没有调用的服务;我的想法是让预部署服务,以监听安装这些数据提供捆绑的情况下,如果匹配成功,则处理和数据保存到数据存储。

例如我有一个WidgetService其将监听安装或窗口小部件数据提供束的卸载事件,ShppingCartService将侦听从ShoppableItem数据提供束等安装/卸载事件。

这有助于我保持处理和坚持逻辑集中,我的数据提供者不需要编写任何代码,使处理他们的数据。所有这一切都从数据提供捆绑预期是服务名称/ ID,服务版本,先决条件,他们需要发布的数据。

我已经阅读OSGi的解释服务,并能够发现客户端或基于其提供评价丢弃服务的动态可插拔几篇文章;然而,这些都是有关方案,其中客户端是智能的发现和执行他们所感兴趣的服务都在谈论。

我的目的是让客户完全不知道任何服务发现的,对于这个问题的任何代码。所有客户端通过是关于客户端在interseted服务时,依赖关系,以及信息的 数据 ;客户端应该是完全哑。

在OSGi是这可能吗?我已经准备好了,即使在延伸的几个核心的OSGi框架类的成本来考虑这个架构!

我已经发现了一些内容,可以是远程相关堆栈上溢在问题: 情迷捆绑元数据与从安装捆

但是,我想钩或将调用我的各自的服务时已经安装的一个或多个数据提供者束的事件。这些数据提供束可有兴趣在任何已安装在系统中的服务。我甚至准备写一个中央bunle仓库管理器/监听器的东西,那种会听任何软件包安装和调用我的服务的门面,这将决定基于数据提供者包提供的元数据来执行该服务。

我刚开始OSGi的,所以需要对如何推进?

一点点方向

我会真的很感谢你们/女孩:)如果你能帮助我实现这个!

我有一个疑问,我深深的脑海,这可能不容易获得在OSGi的,即使这是真的,我愿意花费时间和扩展框架以实现这一目标。我需要的是一些指导原则和明确的方向。谁知道,如果OSGi是真的缺乏这种功能,那么这将是一个非常有用的附加到未来的OSGi规范。

我希望得到的OSGi社区一些帮助,

感谢和问候, 桑巴

有帮助吗?

解决方案

您可能有一个看的OSGi核心规范的第4.7节(活动)。框架加注 BundleEvents 当在束的生命周期的变化,例如当它被安装或卸载。你需要做的是实施的 BundleListener 的,然后将收到的事件,所以你的服务可以对变化作出反应。

其他提示

我已经描述了设计图案,我称之为 “OSGi的中介” 时,其可以是你的问题的解决方案。

要调解的项目将只需要与服务注册登记;所有的依赖可以通过您的调解员实施管理。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top