2012-05-02 46 views
5

我们正在研究基于OSGi的基础架构来处理基于数据流的数据流。具体的处理任务由各个OSGi组件执行。我们现在需要将这些组件分布到不同的机器上,这意味着我们需要OSGi组件/容器之间的某种通信机制。分布式基础架构中的OSGi

在我的研究中,我遇到了不同的潜在解决方案:R-OSGi,用于分布式OSGi的Apache CXF,Eclipse通信框架。

ECF似乎特别有趣,因为它支持不同的传输格式,并提供对服务发现等内容的支持。

我的核心问题:

  • 是否有详细的教程/穿行设立内菲利克斯的ECF基础设施? (从我的研究中,我发现最近添加了Felix支持)
  • 除了上面列出的三种方法之外,我可能会错过哪些解决方案?
  • 是否有理由使用Apache CXF而不是ECF?

回答

2

第一个问题 - 是否有与Felix一起设置ECF的详细步骤 - 我不知道答案,尽管可能使用搜索引擎找出这些术语的组合。

问题是ECF使用Equinox基础结构,并且有时通过传递依赖性(特别是使用Equinox进行非公开调试的Runtime API)非有依赖的包。这反过来又意味着ECF依赖于大量的其他组件,并且这个组件在Felix运行时通常没有很好的定义。

您错过了Paremus服务结构,这是一个商业OSGi云解决方案。我不确定你是否专注于开放源代码,但如果你包含商业许可证,那么他们有一个非常强大的远程服务架构。

最后,关于ECF问题的Apache CXF问题 - 如果您使用的是Felix,我认为使用Apache CXF可能比使用ECF更容易。这主要是由于设置了依赖关系并使其工作,并且结合ECF不能在Felix上测试的事实,因此可能会假设Equinox运行时的特定方面(例如,它包括运行时的父类加载器代理来拾取引导类路径中的东西)。这不是ECF本身的错,而是Eclipse生态系统如何工作的一个假象。

如果您想要与非OSGi运行时进行通信,那么Apache CXF的优势在于它们可以生成WDSL以与其他语言进行交互。我相信你可以在ECF做同样的事情,做更多的工作。 CXF解决方案可能比相应的ECF解决方案更冗长(WSDL总是),但如果您没有使用大量请求,这不太可能产生重大差异。