【发布时间】:2014-06-04 18:45:18
【问题描述】:
我们将使用 J2EE 开发大型应用程序。该应用程序包含许多模块。为此,我们计划将应用程序拆分为模块应用程序并在不同的服务器上运行它。
如果我使用 OSGI,那么在不同服务器上运行的两个模块组件之间是否可以进行通信?
我对 OSGI 不熟悉。请帮我找到大规模应用的解决方案
谢谢
【问题讨论】:
标签: java spring jakarta-ee osgi
我们将使用 J2EE 开发大型应用程序。该应用程序包含许多模块。为此,我们计划将应用程序拆分为模块应用程序并在不同的服务器上运行它。
如果我使用 OSGI,那么在不同服务器上运行的两个模块组件之间是否可以进行通信?
我对 OSGI 不熟悉。请帮我找到大规模应用的解决方案
谢谢
【问题讨论】:
标签: java spring jakarta-ee osgi
您可以从 OSGi 远程服务规范开始。 Apache CXF 项目为此提供了一个实现。引用from CXF web page:
它使用 Web 服务实现远程服务功能,利用 HTTP 上的 SOAP 并通过 WSDL 合同公开服务。
根据我的经验,将 CXF 嵌入 Equinox(Eclipse OSGi 实现)非常容易。
但是 DOSGI 并不是唯一的方法:像 JMS 这样的排队系统或像 Hazelcast 这样的分布式缓存可以帮助您在整个系统中分发事件和数据。这些技术也可以很容易地嵌入到 OSGi 中。
【讨论】:
好的,这是另一个 ;) 如果使用 Apache Karaf 运行,您只需要安装 Apache Karaf 子项目 Cellar 及其对应的 DOSGi 功能。有了这两个,您将拥有 1)Karaf 的集群解决方案和 2)您的应用程序与不同集群组通信的方式。所有这些都是 Karaf 3 开箱即用的,只需安装额外的功能 cellar 和 cellar-dosgi :)
【讨论】:
远程服务规范的另一个实现是 Amdatu Remote:
https://amdatu.atlassian.net/wiki/display/AMDATUDEV/Amdatu+Remote
Amdatu Remote 子项目提供 OSGi Remote Services 1.0 (OSGi Enterprise R5) 和 Remote Service Admin 1.1(开发中)规范的实现。
【讨论】: