远程OSGI服务的工作示例

时间:2009-08-31 23:28:29

标签: osgi

我是OSGI编程的新手。任何人都可以为我提供客户端/服务器osgi服务调用的工作示例。

在过去的两周里,我一直在努力实现这一目标而没有取得任何成功。

我的服务是由同一台机器上的eclipse实例发现并执行的,但是当我从另一台机器上尝试同样的事情时,它就失败了。

任何帮助将不胜感激。

感谢。

5 个答案:

答案 0 :(得分:8)

在OSGi平台(版本4版本4.1)中,通过OSGi服务注册表发现的服务是仅在单个OSGi框架实例(即单个JVM)内可用的本地服务。您不能期望执行在不同计算机上运行的OSGi服务。

如果要跨多个框架实例(即多个JVM /多台机器)调用OSGi服务,您应该查看将成为upcoming OSGi specification(版本4版本4.2)一部分的分布式OSGi规范(RFC 119) )使用CXF作为reference implementation

更新:调用远程OSGi服务的另一种方法是使用R-OSGi。它是一个中间件,提供了一种几乎透明的方式来访问远程OSGi平台上的服务。

答案 1 :(得分:3)

OSGi服务是intra-vm,而不是inter-vm,除非你在顶部添加分发。

您可能希望查看Brian's tutorial,它可以很好地展示如何导出OSGi服务并使用ECF执行远程分发。有很多捆绑包,但他在解释它方面做得很好。

答案 2 :(得分:2)

除非您正在使用CXF或Eclipse的分布式OSGi实现,否则与OSGi中的远程处理无关。您应该能够在两个基于OSGi的进程之间进行任何远程实现。

我要说的是,如果您尝试使用RMI或Spring的远程处理中提供的任何RPC模式,您可能会遇到类加载器问题。这是可以解决的,但需要很好地理解OSGi和类加载器。

如果您在OSGi之外运行代码,您的代码是否有效?你在使用防火墙吗?您是否可以在PC上运行任何网络上的其他PC可见的基于网络的服务?

如上所述,该问题看起来比与OSGi相关的网络相关更多。

此外,您没有提到在不同的PC上运行时遇到的失败。

答案 3 :(得分:1)

eclipse基础的Riena平台通过将服务作为Web服务端点发布来提供OSGi remote services

答案 4 :(得分:1)

也许应该更新答案,因为它们不再有效。

现在有OSGi远程服务可用您可以在OSGi Enterprice规范第100章中阅读它。有两个主要实现:Eclipse ECF和Apache CXF。 ECF有一个很好的例子here