如何在 Fabri8 的不同容器中使用依赖包?

How to use dependent bundles in different container in Fabri8?

我正在尝试了解 Fabric8 的容器管理功能。 我只是想澄清以下情况可以通过在 JBossFuse 中使用 Fabric8 来实现。

我创建了 2 个简单的包(tick、tock 包的灵感来自:http://kevinboone.net/osgitest.html)。 Simply Tick bundle 正在导出一个包,而 Tock bundle 正在导入它。换句话说,Tock Bundle 依赖于 Tick Bundle。

这 2 个包在部署在单个容器中时运行良好(比如在 JBoossFuse 中的一个子容器中)。

然后我使用 fabric8 创建了一个集群,并将其容器也添加到 Fabric Ensemble。

而且我已经创建了 2 个配置文件。 TickProfile 包含 Tick 包,Tock 配置文件包含 Tock 包。

我已将以上 2 个配置文件部署到 2 个不同的容器中,如下所示,

然后它无法正常工作,因为 Tock bundle 无法解析其对 Tick Bundle 公开的 Tick Bundle 的依赖性(因为这些 bundle 在两个不同的容器中)。

我认为 fabric8 可以做到这一点,但似乎不能。

如果有人能告诉我是否有任何方法可以实现这一点,我将不胜感激。

谢谢。

不,这是不可能的。 OSGi 级别的包导出和导入受限于 JVM。这意味着不同 JVM 中的包将无法相互导入 类.

唯一支持集群的 OSGi 概念是服务。 OSGi 规范调用远程服务。

参见:https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service