如何使用R-Osgi获取远程“导出包”?

时间:2011-10-14 07:45:48

标签: osgi dosgi

R-Osgi为我们提供了一种从远程OGSi容器调用服务的方法。网站:http://r-osgi.sourceforge.net

我是R-OSGi的新手,现在我想将我的OSGi容器拆分成小容器并通过R-Osgi互相交互,因为它太大了。但似乎R-OSGi只为注册服务提供了一种方式。我们知道,除了Service之外,最受欢迎的2种捆绑交互方式,“export-package”也被广泛使用。

那么,有没有人熟悉R-OSGi并且知道如何使用远程OSGi容器中的“exported-package”?

感谢您的回复。

1 个答案:

答案 0 :(得分:2)

如果您考虑一下,尝试处理远程导入/导出包非常复杂,容易出错并容易出错;您需要通过线路发送所有捆绑生命周期事件,并在导入系统中对其进行保护(这将需要缓存)。

此外,框架需要提前知道使用这些类定义(您无法实例化引用类加载器不可用的类的类)。远程包的类加载器可能依赖于来自另一个类加载器的类,这个链可以绕过网络,使得类加载需要很长时间。

换句话说;如果没有他们所依赖的类定义,您的本地捆绑将永远无法解决,并且考虑到SLA非常差的网络/硬件上可能有数千个潜在的远程导出器,考虑到{{3},这将无法很好地扩展或非常强大}。

如果我们尝试执行远程包,框架将需要从所有可用的远程节点导入所有导出的包,然后只选择一个导入每个包导出(这将是任意的,如果选择节点关闭,整个导入远程包过程必须再次触发)。

您需要做的是将api / interfaces与您的实现分开,然后将api包分发给需要它的所有节点,然后使用dOSGi导入服务。

道歉,如果这不清楚或不明确,但它应该解释为什么远程导出包是不切实际的。

旁注;我不确定r-osgi是否正在积极维护或是最新的fallacies of distributed computing,从查看最后一次提交到SVN trunk是14/02/2011。列出了Remote Services Admin spec的一些替代dOSGi实现(但避免使用CXF)。

编辑:在部署方面,可以从OBR(有here个数量和多个实施public ones / {分发您的捆绑包(和配置) {3}})或maven存储库可以用Felix重新占用。