当前位置: 首页 > 软件库 > 程序开发 > OSGi 框架 >

R-OSGi

OSGi 分布式通讯组件
授权协议 MIT/BSD
开发语言 Java
所属分类 程序开发、 OSGi 框架
软件类型 开源软件
地区 不详
投 递 者 叶经略
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 实现流程
图 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,等待通讯返回。
  • 一、服务注入(有4种场景) 场景1:Service changed,针对RemoteServiceAdmin class的 1.RemoteServiceAdminList. stRemoteServiceAdmin = new ServiceTracker(bctx, RemoteServiceAdmin.class.getName(), null) { @Override public Obj

  • l 什么是模块化 与面向对象一样,模块化的目的也是松耦合,高内聚。我们可以理解为模块化是将对象间的互访做了边界划分,即对一组业务相关的对象进行封装,并且提供可能的更高层次的代码访问隔离机制。 l 物理模块化 VS 逻辑模块化 物理模块化是指应用中的类文件被物理的分割放在不同的模块中,但是每个模块间的互访不受控制,各个模块可以访问模块间的内部对象,只要对象是可访问的。只是是对代码本身进行模块化管理。

  • 最近由于工作需要,一直在看OSGI部分的资料。 什么是OSGI的,从广义上说,OSGI规范为网络服务定义了一个标准的,面向组件的计算环境。当为网络设备(既包括嵌入式也包括服务器)添加OSGI服务平台功能后,就能够在任何位置获取控制这个网络设备上的软件组件的生命周期的能力。网络设备上的软件组件可以被任意的安装、更新或者删除而不影响该设备的运行。这些组件是一些能够动态发现和使用其他组件的类库或者应用程

  •   OSGI (Open Service Gateway Initiative) 历史: 1999年发起OSGI,开始只出现在嵌入式系统和网络设备市场,2004年IBM发布采用OSGI搭建eclipse3.0,不再使用原来的插件体系,WebSphere 6.1 也全面改用 OSGI;JBoss、WebLogic、Spring DM,甚至是 BMW 车的控制系统中都得到了很好的应用。 Eclipse

  •  该规范和核心部分是一个框架 ,当中定义了应用程序的生命周期模式和服务注冊。基于这个框架定义了大量的OSGi服务: 日志、配置管理、偏好,HTTP(执行servlet)、XML分析、设备訪问、软件包管理、许可管理、星级、用户管理、IO连接、连线管理、Jini和 UPnP。 这个框架实现了一个优雅、完整和动态的组件模型。应用程序(称为bundle)无需又一次引导能够被远程安装、启动、升级和卸载(当中

  • Spring-OSGi默认加载解析META-INF/spring目录下的xml文件作为spring bean配置文件,也可通过在MANIFEST.MF中增加Spring-Context来指定spring bean配置文件。   把一个Spring bean发布为OSGi Service,只需在spring bean的xml中这么配置就行了: <osgi:service id=”OSGi服务ID”

 相关资料
  • (要求Workerman版本>=3.3.0) /Channel/Client 客户端

  • (要求Workerman版本>=3.3.0) __construct void ChannelServer::__construct([string $listen_ip = '0.0.0.0', int $listen_port = 2206]) 实例化一个ChannelServer服务端 参数 listen_ip 监听的本机ip地址,不传默认是0.0.0.0 listen_port 监听的端口

  • (要求Workerman版本>=3.3.0) 源码地址:https://github.com/walkor/Channel Channel是一个分布式通讯组件,用于完成进程间通讯或者服务器间通讯。 特点 1、基于订阅发布模型 2、非阻塞式IO 原理 Channel包含Channel/Server服务端和Channel/Client客户端 Channel/Client通过connect接口连接Cha

  • (要求Workerman版本>=3.3.0) 源码地址:https://github.com/walkor/Channel Channel是一个分布式通讯组件,用于完成进程间通讯或者服务器间通讯。 特点 1、基于订阅发布模型 2、非阻塞式IO 原理 Channel包含Channel/Server服务端和Channel/Client客户端 Channel/Client通过connect接口连接Cha

  • (要求Workerman版本>=3.3.0) 基于Worker的多进程(分布式集群)推送系统 start.php <?php use WorkermanWorker; require_once __DIR__ . '/Workerman/Autoloader.php'; require_once __DIR__ . '/Channel/src/Server.php'; require_once _

  • 4.7 ROS分布式通信 ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。 因此,ROS对网络配置有某些要求: 所有端口上的所有机器之间必须有完整的双向连接。 每台计算机必须通过所有其他计算机都可以解析的名称来公告自己。 实现 1.准备 先要保证不同计算机处于同一网络中,最好分别设置固定IP,如果

  • 译者:univeryinli 后端 torch.distributed 支持三个后端,每个后端具有不同的功能。下表显示哪些功能可用于CPU/CUDA张量。仅当用于构建PyTorch的实现支持时,MPI才支持CUDA。 后端 gloo mpi nccl 设备 CPU GPU CPU GPU CPU GPU --- --- --- --- --- --- --- 发送 ✓ ✘ ✓ ? ✘ ✘ 接收 ✓

  • 主要内容:1.dbinom()函数,2.pbinom()函数,3.qbinom()函数,4.rbinom()函数二项分布模型用来处理在一系列实验中只发现两个可能结果的事件的成功概率。 例如,掷硬币总是两种结果:正面或反面。使用二项式分布估算在重复抛掷硬币次时正好准确地找到次是正面的概率。 R具有四个内置函数来生成二项分布,它们在下面描述。 以下是使用的参数的描述 - x - 是数字的向量。 p - 是概率向量。 n - 是观察次数。 size - 是试验的次数。 prob - 是每次试验成功的概