R-OSGiOSGi 分布式通訊組件
R-OSGi 是一套適用于任意滿足 OSGi 架構(gòu)的分布式通訊組件。它以 jar 的形式發(fā)布,部署容易,使用也較為便捷。
概括下用戶只需要完成如下幾步。
在 Server 端:
- OSGi 容器內(nèi)啟動(dòng) R-OSGi 的 Bundle
- Service 的 Bundle 里 MENIFEST 文件中 import 對(duì) R-OSGi 的引用
- 將需要被 Client 調(diào)用的接口暴露給 R-OSGi 模塊即可。
在 Client 端:
- OSGi 容器內(nèi)啟動(dòng) R-OSGi 的 Bundle
- Client 的 Bundle 里 MENIFEST 文件中 import 對(duì) R-OSGi 的引用
- 取得 R-OSGi 暴露的 Service 調(diào)用接口即可
R-OSGi 運(yùn)行流程
下圖簡(jiǎn)要說(shuō)明了 R-OSGi 實(shí)現(xiàn)的流程及原理:
圖 2. R-OSGi 實(shí)現(xiàn)流程
- 遠(yuǎn)程 Service 通過(guò) R-OSGi 框架注冊(cè)到 OGSi 容器。
- R-OSGi 在 OS 上打開(kāi)一個(gè)端口(默認(rèn) 9278)來(lái)創(chuàng)建 Socket 監(jiān)聽(tīng)器。
- Client 端 Bundle 啟動(dòng)時(shí)調(diào)用指定 Server 的默認(rèn)端口,請(qǐng)求 Socket 通信。
- 在本 OSGi 容器內(nèi)生成一個(gè)代理 Bundle,用于本地 Client 調(diào)用。
- 在 Client 端注冊(cè)簽名一樣的 Service。
- 客戶端調(diào)用 Service,實(shí)際上調(diào)用的是通過(guò)代理 Bundle 調(diào)用遠(yuǎn)程的 Service,等待通訊返回。
評(píng)論
圖片
表情
