基于CORBA的OSGi分布式扩展

一、 引言

随着网络技术和Internet 的快速发展,软件运行从封闭、静态的主机 / 桌面逐步走向开放、多变的分布环境 [1] 。由于 OSGi 技术最初定位于嵌入式领域,进程间通信需要较为丰富的计算资源,因此 OSGi 规范只为单个 Java 虚拟机内的 Java 应用提供了一个高度动态和设计良好的构件运行环境。 OSGi 的动态性、模块化和面向服务的特性使得其在企业计算领域得到了广泛的应用,但企业计算领域所具有的大规模、异构性的特点对标准 OSGi 规范提出了支持分布式处理的需求,即能够支持网络中多个 Java 虚拟机内的 OSGi 应用之间的远程服务发现与远程服务方法调用,并支持 OSGi 应用与网络中非 OSGi 应用的互操作,从而支持企业应用拓扑,提高可用率、可靠性及可伸缩性。因此,提供 OSGi 分布式扩展机制以支持多进程、多 Java 虚拟机、多个节点、多种语言的企业计算是亟需解决的问题。

OSGi分布式处理能力是企业计算领域对 OSGi 提出的核心需求之一。 OSGi 联盟针对企业计算领域对 OSGi 的需求于 2007 年成立了企业专家组,制定相关的规范以提供通用的解决方案,其中支持 OSGi 分布式处理始终是企业专家组会议议程里级别最高的需求之一。 RFC 119[2] 规范是 OSGi 企业专家组制定的针对 OSGi 分布式扩展的规范,提倡使用已有的成熟的分布式技术来实现 OSGi 分布式扩展,如 CORBA 、 WebService 等。

二、相关研究

近年来,学术界在OSGi 分布式扩展技术相关领域展开了很多研究。 Newton[3] 项目是通过改变 OSGi 构件模型的方式来实现 OSGi 分布式处理的典型项目,其目的是建立一个分布式构件模型, OSGi 是 Newton 整个构件模型的中心,而 Jini 则是其远程基础设施的基石, Newton 使用 SCA ( Service Component Architecture )来描述构件装配模型。 R-OSGi[4] ( Remoting-OSGi )是 EclipseCon2007 大会上提出的实现 OSGi 分布式处理的项目。 R-OSGi 遵循 OSGi 规范,使用对接口字节码分析的方式来动态产生服务代理 bundle ,以实现远程服务的透明访问,并使用 SLP[5,6] ( Service Location Protocol )协议实现远程服务发现。 Apache CXF[7] 项目成立了一个名称为 DOSGi ( Distributed OSGi )的子项目作为 RFC 119 规范的参考实现, DOSGi 使用 Web Service 来实现远程服务调用,使用基于 HTTP 的 SOAP 协议来实现远程服务的方法调用,并通过 WSDL 来发布服务。 ECF[8] 项目和 Rinia[9] 项目也旨在实现 RFC 119 规范。

三、关键问题

OSGi分布式扩展需要能够支持网络中多个 Java 虚拟机内的 OSGi 应用之间的远程服务发现和远程服务方法调用,并支持 OSGi 应用与网络中非 OSGi 应用的互操作,从而满足企业应用拓扑,提高可用率、可靠性及可伸缩性。然而在 OSGi 分布式扩展机制研究中,存在着如下几个突出的问题,具有一般性,值得深入展开研究: (1 )在编程模型上,对 OSGi 编程模型存在一定的侵入性。 当前,绝大多数OSGi 分布式扩展机制的研究仅仅是为了实现分布式处理能力,在分布式扩展的同时没有考虑利用 OSGi 本身的特性以保持 OSGi 原有的编程模型,这就使得分布式 OSGi 开发人员需要根据 OSGi 分布式扩展机制所采用的分布式技术来学习相应的分布式编程模式才能开发分布式 OSGi 应用,具有较陡的学习曲线,不利于将集中式的 OSGi 应用透明地转化为分布式应用。( 2 )在互操作能力上,不支持 OSGi 应用和企业计算领域中 CORBA[21] 遗留系统的互操作。企业计算领域存在大量的 CORBA 遗留系统,提供一种友好易用的方式来支持 OSGi 应用与 CORBA 遗留系统的互操作是企业计算领域对 OSGi 分布式扩展的主要需求之一。( 3 )在技术实现上,没有满足 OSGi 的最小执行环境要求,限制了分布式 OSGi 应用的适用领域。轻量级、平台独立性和可移植性是 OSGi 的本质属性,分布式 OSGi 应用也应该保持该特性,以促进 OSGi 技术在各个领域更为广泛的应用,但是,部分 OSGi 分布式扩展研究项目的远程调用实现技术依赖特定的、能力较强的 Java 虚拟机环境,不适用于资源受限的环境,限制了分布式 OSGi 应用的适用领域。

(一)OSGi的分布式扩展模型

针对目前现有OSGi 分布式扩展研究中存在的问题,我们以 OSGi 分布式扩展规范 RFC 119 为基础,以非侵入性、通用性和良好互操作性为目标提出了基于 CORBA 的 OSGi 分布式扩展模型及扩展机制,如图 1 所示,其特点是采用 CORBA 的 DII/DSI ( Dynamic Invocation Interface/Dynamic Server Interface )技术和 Java 反射技术实现远程服务方法调用,能够透明地将集中式的 OSGi 应用转变为分布式应用,既保持了 OSGi 原有面向服务的编程模型和轻量级特点,又支持 OSGi 应用与 CORBA 应用的互操作。

图 1   基于CORBA的OSGi分布式扩展模型

基于CORBA 的 OSGi 分布式扩展模型的核心是 CORBA远程调用支持模块 CORBA-DSW( CORBA-Distribution-Software )和远 程服务发现模块 CORBA-NDS( CORBA-Naming-Discovery-Service )。 CORBA-DSW 远程调用支持模块负责监控本地服务中心的服务注册、查询和注销情况,根据监控情况动态生成远程服务 的 服务端代理或客户端代理,服务端代理和客户端代理提供了基于CORBA 的远程服务调用能力。服务端代理的作用是当接收到 来自对象请求代理 ORB (Object Request Broker ) 的CORBA 调用请求后,负责将该请求转化为 Java 调用请求,然后根据 Java 调用请求调用服务,将服务的处理结果由 Java 形式再转变为 CORBA 形式后返回给 ORB 。客户端代理的作用是实现位于其他节点上的远程服务的接口,将该接口中的方法的 Java 调用请求转换成对远程服务的服务端代理的 CORBA 调用请求。客户端代理与服务端代理 的 生成、运行 和 终结是动态 、透明 的,其生存周期与其所关联的服务的生存周期 相关 。远程服务发现模块 CORBA-NDS 用于辅助CORBA 远程调用支持模块为本地 OSGi 框架 提供远程服务 发现能力,用于支持远程服务的注册、查询、改变和注销 。

基于CORBA 的 OSGi 分布式扩展机制 支持分布在网络中的OSGi 应用与 OSGi 应用之间的远程服务发现与调用能力 , 如图 2 所示, 该机制 以符合OSGi 标准的 b undle集的形式部署并运行在节点 1 和节点 2 的 OSGi 框架之上,在 OSGi 框架 1 上为服务消费者提供服务 A 的客户端代理,在 OSGi 框架 2 上为服务提供者提供服务 A 的服务端代理,服务 A 的客户端代理和服务端代理通过 IIOP 协议来实现远程互操作。

图2  扩展机制支持OSGi框架之间的服务发现与使用

四、小结

OSGi分布式扩展是 OSGi 在企业计算领域面临的重要问题。本文提出了一种基于 CORBA 的 OSGi 分布式扩展模型及扩展机制并将其集成到“核高基”课题“国产中间件参考实现及平台”中。与现有的 R-OSGi 以及 D-OSGi 等相比,其特点在于既保持 OSGi 面向服务的编程模型和轻量级特点,又可以将集中式的 OSGi 应用透明地转变为分布式应用,并支持 OSGi 应用与 CORBA 应用的互操作。下一步我们将进行进一步的完善和改进,进一步扩大 OSGi 分布式扩展中服务发现的通用性。

参考文献

[1]  杨芙清, 梅宏 , 吕建 , 金芝 . 浅论软件技术发展 . 电子学报 ,2002,12(30):1901~1906 .

[2]  OSGi Alliance. RFC 119 Specification.  http://www.osgi.org/Specifications/HomePage, 2009.

[3]  Paremus. The Newton Project. http://newton.codecauldron.org, 2006.

[4]  Rellermeyer J.S., Alonso, G., Roscoe, T. R-OSGi: Distributed Applications Through Software Modularization. Proceedings of the ACM/IFIP/USENIX 8th International Middleware Conference, 2007.

[5]  Veizades J., Guttman E., Perkins C. RFC 2165: Service Location Protocol. IETF, 1997.

[6]  Rellermeyer J.S. jSLP project. http://jslp.sourceforge.net, 2005.

[7]  Apache Alliance. Apache CXF Project. http://cxf.apache.org/distributed-osgi.html, 2009.

[8]  The Eclipse Foundation. Eclipse Communication Framework Project. http://www.eclipse.org/ecf, 2009.

[9]  The Eclipse Foundation. Riena Platform Project. http://www.eclipse.org/riena/, 2009.

14、物联网软件架构与物流嵌入式智能的探索 本文探讨了物联网软件架构及其在物流嵌入式智能中的应用。重点分析了物联网架构的特性,如统一前端、优化服务发现等,并与Jini、UPnP、SODA等相关工作进行了对比。同时,文章讨论了物流中嵌入式智能的实现层次、应用案例以及面临的挑战,包括技术、成本和安全问题,并提出了应对策略。最后,文章总结了物联网架构在物流智能化升级中的前景与发展方向。 阅读详情

相关推荐

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 585

osgi确实面临鸡肋之嫌

osgi最明显的缺陷bundle尽管可以为隔离的服务建立独立生命周期管理的热部署方式,以及明确的服务导出和导入依赖能力,但是其最终基于jvm,无法对bundle对应的服务实现计算资源的隔离,一个服务的故障依然会导致整个jvm crush,这使得在一个运行时的osgi上部署模块级服务只获得了模块部署和启停隔离,服务明确依赖的好处,但是没办法实现计算节点的线性扩展,在当前分布式,微服务,网络计算的趋势下

不跟风,不入流 2万+

科研绘图神器Origin中文版安装后还是英文?手把手教你三步搞定界面汉化

本文详细介绍了Origin软件安装后界面仍显示英文的解决方案,包括基础语言切换、注册表修改和序列号破解三种方法。通过逐步指导,帮助用户快速实现界面汉化,提升科研绘图效率。特别针对教育版用户提供了有效的语言锁定解除方案。

weixin_42524708的博客 1133

利用OSGI声明服务实现Corba服务的改善

问题的提出:        1.  客户对服务模块的质量要求很高,服务的停止时间长,会造成用户无法接受的经济损失。        2..通信协议采用Corba, 而Corba的服务部分对开发人员要求比较高。要解决什么?        采用OSGI可以改善第一个问题,解决方案:               实现本提案的功效所使用的技术手段:Corba服务有它自己的

yekai012的专栏 606

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 904

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1300

osgi为什么不流行_为什么我们需要分布式OSGi?

osgi为什么不流行 在我们通过Distributed OSGi项目实现一个重要的里程碑时,似乎是时候回顾到目前为止已完成的工作,确定其余步骤并首先讨论为什么要这样做的好时机。 在11月,我们发布了OSGi规范的4.2版本的设计文档(OSGi术语中的注释或RFC) 的早期发布草案的更新 。 本月,我们在Apache CXF上发布了该版本重要的新设计之一RFC 119 Distributed ...

cunfu6353的博客 5572

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3318

分布式osgi--rfc119文档翻译

摘要: 这篇RFC包括了RFPS 79和88中的需求的设计.这个设计为分布式OSGI处理流程定义了一个最小级别的特征(feature)和功能(function),包括外界环境(external environments)服务的发现和获取.这个设计的目的不是对其他分布式OSGI的设计持否定态度,也并不对基于其他外部的API(external api),如:Jave EE,SCA,JBI等等这些api...

ddtenvelope的专栏 202

HSTS漏洞(缺少Strict-Transport-Security头)

HTTP严格传输安全性(HSTS)告诉浏览器只能使用HTTPS访问网站。检测到您的Web应用程序未实现HTTP严格传输安全性(HSTS),因为响应中缺少严格传输安全性标头。理想回复响应头因存在:Strict-Transport-Security: max-age=31536000信息。nginx添加响应头。

墨痕诉清风的博客 4410

实战篇(七):使用Processing和PixelFlow库创建交互式流体太极动画

类:用于配置流体运动的参数,比如圆的位置、半径、运动的角度和速度以及颜色等。类:实现了接口,用于更新流体物理仿真的状态,同时整合声音输入作为流体动态变化的一部分。my_update方法:是流体物理仿真更新的核心,它计算流体粒子的速度和位置,并且将这些数据传递给流体库来模拟流动。现在,让我们进一步分析并解释每个部分的作用以及如何操作。float x;// 圆心位置xfloat y;// 圆心位置y// 半径// 是否是顺时针// 圆周运动,弧上的点位置,以及上一帧的点位置// 角度。

帅小柏的博客 1635

面向服务体系架构(SOA)和业务组件(BC)的思考

在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了一个在新开发系统环境下基于Web服务和OSGi标准的组件化开发模型。

肖建国的博客 1044

Android 13.0 设置默认屏幕亮度百分比

在13.0的系统ROM产品开发中,在一些产品开发中,对于设置默认屏幕亮度和屏幕亮度百分比的功能,在开发中也是常见的功能,在10.0的平台设置可能有一些不同,一般的都是在SettingProvider中设置就可以了 在11.0以后的系统中设置默认屏幕亮度的方法就不同了,接下来具体分析功能的实现

安卓兼职framework和app工程师的博客 1560

安卓之模块化&组件化

安卓之模块化&组件化

slave_of_life的博客 487

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

面向服务体系架构和业务组件的思考

摘要:   在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了一个在新开发系统环境下基于Web服务和OSGi标准的组件化开发模型。  什么是业务组件(BC)     组件化、模块化是软件开发中一个很重要的概念,基于面向服务体系架构(Service

zzhongcy的专栏 4486

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

面向服务的体系架构(SOA)和业务组件(BC)的思考

 简介: 在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了一个在新开发系统环境下基于 Web 服务和 OSGi标准的组件化开发模型。 什么是业务组件(BC)组件化、模块化是软件开发

ZF101201的专栏 1309

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SOA架构和业务组件(BC)的思考

面向服务的体系架构(SOA)和业务组件(BC)的思考 在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了一个在新开发系统环境下基于 Web 服务和 OSGi 标准的组件化开发模型。 1评论: 肖 建国, IT 咨询顾问, ...

weixin_30632883的博客 180

系统架构设计师-构件化开发与中间件技术:架构设计落地的核心路径

本文系统阐述了软件构件与中间件的核心知识体系,重点包括:1. 构件核心原理:定义构件四个关键属性(规范接口、明确语境依赖、可独立部署、第三方可组装),分析构件系统的层次架构(构件框架、复合构件、原子构件)。2. 构件复用流程:详细说明检索(刻面检索法)、理解、修改、组装全流程,解析组装失配问题(假设冲突/协议冲突/架构冲突)及解决方案(适配器/框架增强/构件替换)。3. 中间件技术体系:分类介绍通信处理类、事务处理类等五类中间件的功能特点与典型应用场景。4. CORBA架构:剖析其ORB、IDL等核心组件及

专注知识分享,希望可以帮助到需要的同行,感谢关注与支持!专注知识分享,希望可以帮助到需要的同行,感谢关注与支持! 601

JavaJava程序员进阶

I/O流域文件(FileFileFliter,文件流,文本流,数据流,缓冲流,对象流,字节字符数组流,字符串流,打印流等)、多线程、实体类、集合类、枚举迭代器类,图形编程AWT(Java2D/JavaSound/JMF)Swing、SWT、JFace,网络编程Applet、Socket/TCP/UDP、NIO、RMI、CORBA、选择器、数据报/Socket/ServerSocket通道,正则表达式、XML和属性文件。反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。.

qq_46416934的博客 1020

采访:Jim Marino和Meeraj Kunnumpurath谈SCA和Fabric3

BEA已基于开源Fabric3运行时在WebLogic 10.3中发布了SCA支持的技术预览。 InfoQ与BEA Systems的技术目录,最初的SCA参与者和Fabric3贡献者之一的Jim Marino以及VocaLink的首席技术专家Meeraj Kunnumpurath进行了交谈,他曾参与SCA规范和Fabric3的实施。 InfoQ:在过去的10年中,SOA发生了很多事情,您对...

cunfu6353的博客 304

企业开发java主流框架技术选型整理

SOA服务框架 Dubbo:一个分布式服务框架,以及SOA治理方案. SOA框架有:淘宝的HSF、阿里的dubbo、amazon coral、twitter Finagle,Xfire(ws服务)+OSGI+Spring,支付宝SOA架构,WebService也是古老的SOA。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。是远程服务调用中间件。不过已经不再更新了,不推荐. axis2:是新一代的SOAP引擎,Web Services 框架.推荐. cx

TGEE|小黑猪的博客 964

Java技术职业升级路线图

转载自http://blog.youkuaiyun.com/u013322876/article/details/50595909 在技术方面无论我们怎么学习,总感觉需要提升自已,却又不知道从哪里着手,同时也不知道自己处于哪个水平。这时候就需要有清晰的指示图来指引我们,这样我们能清楚的知道我们在哪方面不足,以及自己大概处于哪个阶段和水平。         Java

一人一景的专栏 2676

Java程序员分类

最近看了一本清华大学出版的关于java虚拟机的书,看到其中对java程序员的分类,感觉挺不错,所以分享给大家。 Java程序员的6个级别:   一、第一个级别——普通java程序员 掌握内容: 1)  Java开发环境 JDK、JVM、Eclipse、Linux。 2)  Java 开发入门:Java开发环境的安装与使用,包括JDK命令、Eclipse IDE、Linux下J

Britain的专栏 2561

【Java进阶营】java开发涉及到的各种框架比较,技术选型

SOA服务框架 Dubbo: 一个分布式服务框架,以及SOA治理方案. SOA框架有:淘宝的HSF、阿里的dubbo、amazon coral、twitter Finagle,Xfire(ws服务)+OSGI+Spring,支付宝SOA架构,WebService也是古老的SOA。 其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。是远程服务调用中间件。 不过已经不再更新了,不推荐. axis2: 是新一代的SOAP引擎,Web Services 框架.推荐

658
上一篇: 基于OSGi的软件构件化方法
下一篇: 基于OSGi的声明式服务
Snoopy7713
博客等级 码龄21年 17粉丝 681原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值