【问题标题】:Working example for a remote OSGI service [closed]远程 OSGI 服务的工作示例 [关闭]
【发布时间】:2010-11-24 11:55:09
【问题描述】:

我是使用 OSGI 编程的新手。谁能给我一个客户端/服务器 osgi 服务调用的工作示例。

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

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

我们将不胜感激。

谢谢。

【问题讨论】:

    标签: osgi


    【解决方案1】:

    在 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 平台上的服务。

    【讨论】:

    • CXF页面底部有一堆样本。
    【解决方案2】:

    OSGi 服务是虚拟机内的,而不是虚拟机间的,除非您在顶部添加分发。

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

    【讨论】:

      【解决方案3】:

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

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

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

      如上所述,该问题看起来与网络相关,而不是与 OSGi 相关。

      另外,您没有提到在不同 PC 上运行时会遇到什么故障。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-27
            • 1970-01-01
            • 2012-01-18
            • 1970-01-01
            相关资源
            最近更新 更多