OSGi 分布式通讯组件 R-OSGi

news/2024/5/22 7:26:29

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 实现流程



 

  1. 远程 Service 通过 R-OSGi 框架注册到 OGSi 容器。
  2. R-OSGi 在 OS 上打开一个端口(默认 9278)来创建 Socket 监听器。
  3. Client 端 Bundle 启动时调用指定 Server 的默认端口,请求 Socket 通信。
  4. 在本 OSGi 容器内生成一个代理 Bundle,用于本地 Client 调用。
  5. 在 Client 端注册签名一样的 Service。
  6. 客户端调用 Service,实际上调用的是通过代理 Bundle 调用远程的 Service,等待通讯返回。

http://www.niftyadmin.cn/n/4413340.html

相关文章

动态模型系统 OSGi

OSGi 技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。 Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。 这些组件能够组装进一个应…

dubbo 初体验

Dubbo做SOA的基础框架,并在其上做集成,由于之前环境都是架构师搭建的,所以我还不是很了解,只是会用,前几天心血来潮自己搭建了一个helloworld版,这里记录一下搭建过程。 第一步,要选择dubbo的中…

ExtJs 备忘录—— GirdPanl表格(一) [ 基本用法 ]

前言 文章内容几经变动,由于相关文章实在是很多而有打退堂鼓之心,倒是忘了备忘之意,于是尽量收集总结多一些资料。 系列 1.  ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]  2.  ExtJs …

ExtJs 备忘录—— GirdPanl表格(二) [ 搜索分页 ]

前言 写文章分两种情况:一种情况 是已经积累了许多经验,写起来轻松且得心应手,内容和系列文章容易把握,最典型的就是视频监控的那系列文章,得以写完是因为已经从事近半年相关的开发工 作;另一种情况则是有方向但积累不…

CXF实现webService服务

对于CXF是干什么用的,我不想多说,大家都知道这是我们在java编程中webService技术的一种实现工具。我们说说为什么用CXF来实现webService: 1. Java的webService实现本身就是一个很耗性能的实现方案(xml与java对象之间在服务端…

spring集成实现webService

1、 配置web.xml 见文件web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xmlns:web"http://java.sun.com…

The constructor Service(URL, QName, WebServiceFeature[]) is undefined

Service(URL, QName, WebServiceFeature[]) is undefined 原因是CXF自带的javax.xml.service 版本高过 jdk的javax.xml.service。 一个解决办法是&#xff1a; 在使用wsdl2java时&#xff0c;加入参数 -frontend jaxws21 这个问题的消息解释可以在这里看到 &#xff1a; http:/…

wsdl2java用法

wsdl2java用法&#xff1a;wsdl2java -p com -d src -all aa.wsdl-p 指定其wsdl的命名空间&#xff0c;也就是要生成代码的包名:-d 指定要产生代码所在目录-client 生成客户端测试web service的代码-server 生成服务器启动web service的代码-impl 生成web service的实现代码…