R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用也较为便捷。
概括下用户只需要完成如下几步。
在 Server 端:
- OSGi 容器内启动 R-OSGi 的 Bundle
- Service 的 Bundle 里 MENIFEST 文件中 import 对 R-OSGi 的引用
- 将需要被 Client 调用的接口暴露给 R-OSGi 模块即可。
在 Client 端:
- OSGi 容器内启动 R-OSGi 的 Bundle
- Client 的 Bundle 里 MENIFEST 文件中 import 对 R-OSGi 的引用
- 取得 R-OSGi 暴露的 Service 调用接口即可
R-OSGi 运行流程
下图简要说明了 R-OSGi 实现的流程及原理:
图 2. R-OSGi 实现流程
- 远程 Service 通过 R-OSGi 框架注册到 OGSi 容器。
- R-OSGi 在 OS 上打开一个端口(默认 9278)来创建 Socket 监听器。
- Client 端 Bundle 启动时调用指定 Server 的默认端口,请求 Socket 通信。
- 在本 OSGi 容器内生成一个代理 Bundle,用于本地 Client 调用。
- 在 Client 端注册签名一样的 Service。
- 客户端调用 Service,实际上调用的是通过代理 Bundle 调用远程的 Service,等待通讯返回。
评论