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

时间:2015-04-28 12:34:10

标签: osgi jboss6.x jbossfuse karaf fabric8

我试图了解Fabric8容器管理的功能。 我只想澄清天气,通过在JBossFuse中使用Fabric8可以实现以下场景。

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

当在一个容器中部署时(例如在JBoossFuse中的一个子容器中),这两个捆绑包可以正常工作。

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

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

我已经在2个不同的容器中部署了2个配置文件,如下所示,

enter image description here

然后它无法正常工作,因为Tock bundle无法解析Tick Bundle暴露的Tick Bundle的依赖关系(因为这些bundle在两个不同的容器中)。

我认为这可以通过fabric8实现,但似乎不可能。

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

感谢。

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。 OSGi级别的包导出和导入与JVM绑定。这意味着不同JVM中的bundle将无法导入彼此的类。

唯一支持群集的OSGi概念是服务。 OSGi规范称之为远程服务。

请参阅:https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service