随着分布式OSGi项目即将抵达重大里程碑,现在应当是一个恰当的时机来回顾一下我们已经完成了哪些工作、还有哪些需要做的,并谈一谈我们为什么要进行这项工作。
为迎接即将发布的OSGi规范4.2版,我们在11月对设计文档初稿(按OSGi术语叫Requests for Comment,或简称RFCs)做了更新。这个月,我们在Apache CXF发布了该版本中一个重要的新设计——即RFC 119,分布式OSGi——的参考实现源码。
由于当前版本的OSGi规范已经在嵌入式领域取得成功,因此分布式OSGi(Distributed OSGi)项目被计划纳入OSGi的下个版本,并开始为企业级应用所采纳。比如,Eclipse插件就采用了OSGi框架;另外,所有应用服务器厂商以及众多ESB厂商也都接纳了OSGi。
OSGi联盟于2006年9月召开过一个公开研讨会,深入探讨了对企业版(若可能的话)的需求(Peter Kriens写了一篇非常好的描述此背景的文章)。当前版本的OSGi规范已经通过JSR 291成为了Java SE的一部分,对于我们参加了该研讨会的人来说,所面临的问题是,OSGi规范是否也应成为Java EE的替代方案,以及假如是的话那么需要满足哪些需求。众多关键需求中的一条是,OSGi服务能够调用运行于其他JVM之上的服务,并支持企业应用拓扑,从而提高可用率、可靠性及可伸缩性。(当前的OSGi规范只定义了在单个JVM里的服务调用行为。Peter的那篇研讨会总结文章里可以看到更多信息。)
2007年1月召开了首次企业专家组会议,工作由此正式开始。分布式OSGi始终是该议程里级别最高的需求之一。起初,我们常被批评为“重复已有工作”或“制造另一个CORBA”,不过这些都是由误解造成的。设计文档初稿(RFC 119)和参考实现代码将有助于解释清楚我们并非如此。我们只是扩展OSGi框架来配置现有的分布式计算软件系统。我们在RFC 119里采用“distribution software”(或简称DSW)这一术语来泛指任何能够进行远程服务调用的协议与数据格式系统。远程指的是另一个JVM或地址空间。
有人建议我们选择一种具体的DSW(distribution software),并将其标准化。此做法的一个好处是,我们可以利用针对特定协议的功能(比如可执行代码的序列化),不过这会缩小选择范围,并可能导致产生依赖。我们并没有那样做,而是定义了一个可用于任何分布式计算软件系统的通用配置机制。我们也试图不妨碍使用像“序列化可执行代码”这样的功能——也就是说,如果你愿意的话,仍然可以那样做,只不过那不是标准化的做法,因为它是针对单一类型的DSW(distribution software)的。
除了Apache CXF的参考实现,Eclipse ECF项目以及Paremus的Infinflow产品也有意实现分布式OSGi的设计,而且我们已经听说Eclipse Riena项目也在作此考虑。因此,但愿我们的分布式OSGi正走在正确的路线上。不过我们仍希望大家提供反馈,而且现在也还有时间来更改规范里的内容。分布式OSGi的设计还包括了发现服务(discovery service)以及用于配置多分布式软件系统组件的SCA元数据扩展。这两样东西目前尚未公开,不过应该快了。
为了说明我们目前处于什么阶段,对OSGi联盟的运作方式做一些了解是大有裨益的。OSGi的流程跟JCP(Java Community Process)颇为相似。实际上,OSGi规范刚开始就是以JSR 8出现的,而且它也基本反映了那个最初JSR工作的进展。OSGi流程是从请求提案文档(Request for Proposal,简称RFP)开始的,该文档对需求进行了详细描述。RFP得到批准后,一个或多个满足需求的请求评论文档(Requests for Comment,RFCs)将被创建起来。当一个RFC得到批准后,有关规范就会进行更新,以涵盖该项设计。RFP和RFC都是专家组的工作成果,尽管它们往往处于组里个别人或小部分人的带领下。
不过,OSGi联盟在规范方面的流程是独一无二的,因为文书写作都是交由Peter Kriens完成的。这点好极了,因为Peter Kriens从一开始就跟随OSGi的工作,他可以确保规范的质量与一致性。而且,这也消除了其他标准化组织在把文档书写工作交给其成员(通常代表与其他成员竞争的厂商)时经常碰到的政治问题。
当前版本的参考实现是为了验证RFC 119的设计,并使得该份RFC得以通过专家组投票。在规范阶段,我们期望在把该项设计整合进规范的过程中对它做进一步讨论,这也许会引起对参考实现的进一步变动。
OSGi专家组现在正着手于同Peter Kriens一起为R4.2版而努力,预计可于三月或四月发布初步版本,并在六月发布最终版本。关于即将发布的R4.2版的更多信息可以在OSGi Dev Con上得知。该技术大会将于3月23至26日在Santa Clara同EclipseCon联合召开。
R4.2版里的另一个主要部分是对核心框架的各种扩展,比如源自Spring的Blueprint Service服务模型(用于开发OSGi服务)以及各种映射到OSGi bundles的Java EE部件(JTA、JDBA、JPA、JNDI、JMX、JAAS和Web Apps)。Java EE映射并不如对核心的增强(如Spring/Blueprint或分布式OSGi)那么成熟,它们只是一个将随R4.2最终版一同发布的预览。
在过去的两年里,我们已经用初稿记录了分布式OSGi的需求与设计,并用参考实现代码进行了演示。OSGi规范R4.2企业版预计于2009年中发布,这是其中的一项重要特性。伴随着对OSGi核心框架的扩展、源于Spring的Blueprint服务组件模型以及关键Java EE技术的映射,即将发布R4.2版对OSGi规范和OSGi社区而言意味着前进中的重要一步。
分享到:
相关推荐
在分布式OSGi环境下,需要确保不同厂商、不同技术栈的服务能够无缝协作。这通常涉及到制定统一的通信协议、数据格式和接口规范。互操作性的提升有助于构建开放、灵活的分布式计算环境。 远程调用性能是指在分布式...
利用R-OSGi实现分布式OSGi应用 本文通过介绍传统 OSGi 应用程序及 R-OSGi 的实现方式入手,阐述了 R-OSGi 对于 OSGi 规范的实现方式。然后通过一个简单的功能实现由浅入深地讲述传统 OSGi 和 R-OSGi 上的两种不同...
基于分布式OSGi的通用电力数据平台提供了一种创新的解决方案,它以电力数据为中心,利用分布式OSGi的灵活性和模块化特性,提升了电力企业的数据共享能力和应用集成水平。这一平台对于构建智能电网的高效协同环境具有...
总结来说,基于分布式OSGi的动态服务组合算法是一套设计用于分布式系统中服务组合的高效机制,通过OSGi框架的灵活特性,结合SOA的服务管理思想,以应对物联网等复杂环境中对服务动态管理的需求。这种机制能够有效...
基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip 基于java的开发源码-OSGi 分布式通讯组件 R-OSGi.zip ...
R-OSGi是OSGi的一个扩展,专门用于实现分布式通信,它为Java应用程序提供了在OSGi环境中进行远程服务交互的能力。 ### OSGi核心概念 1. **服务**:OSGi中的核心概念是服务,它是具有特定接口和功能的模块。服务...
这种技术可以避免开发人员对OSGi编程模型的大规模修改,同时利用现有的分布式计算技术,为OSGi框架增加必要的分布式能力。 在实现OSGi分布式扩展技术时,需要考虑的关键技术包括远程服务激活功能和远程服务发现功能...
【标题】:“基于Java的OSGi分布式通讯组件R-OSGi” 在Java开发领域,OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个Java虚拟机(JVM)内动态地发现、组合和管理软件模块。...
在OSGI中,连接池也需要作为单独的bundle引入,并正确配置为服务,以便其他bundle可以依赖。 6. **事务管理**:在分布式系统中,事务管理是至关重要的。OSGI支持JTA(Java Transaction API)和JTS(Java ...
JAVA源码OSGi分布式通讯组件R-OSGi
【标题】: OSGi与R-OSGi在Java分布式通信中的应用 【描述】: OSGi(Open Service Gateway Initiative)是一种Java模块化系统,它允许开发人员在一个应用程序中分解复杂的代码,使得各个模块可以独立地加载、更新和...
这些类可以通过在类上添加元数据注解来声明为OSGi服务。当服务被注册到OSGi服务注册表后,其他组件可以通过查询注册表来查找并使用这些服务,从而实现松耦合和模块化。 R-OSGi扩展了这一概念,使得OSGi服务能够在...
java资源OSGi 分布式通讯组件 R-OSGi提取方式是百度网盘分享地址
【标题】中的“基于Java的实例源码-OSGi 分布式通讯组件 R-OSGi.zip”揭示了这个压缩包包含的是一个Java编程语言实现的示例代码,它与OSGi(Open Service Gateway Initiative)框架相关,特别是R-OSGi(Remote OSGi...
【标题】: "基于Java的实例开发源码-OSGi 分布式通讯组件 R-OSGi.zip" 在Java开发中,OSGi(Open Services Gateway Initiative)是一个模块化系统和Java服务框架,它允许开发者创建可热部署、独立的模块化应用程序...
本文档介绍了一种基于OSGi(Open Service Gateway initiative)技术的分布式系统集中日志管理方案。OSGi是一种基于Java语言开发的动态模块化系统框架,它允许应用程序在运行时动态地发现、安装、启动、停止、更新和...
java源码:OSGi 分布式通讯组件 R-OSGi.jar
标题和描述均聚焦于“OSGi理论与实战”,这一主题涉及了OSGi规范R4.1的核心概念、实现机制,以及如何基于Equinox框架开发和扩展OSGi-Based应用,包括分布式OSGi的深入探讨。以下将对这些知识点进行详细解析。 ### ...
文章中提到的以RFC119为标准实现分布式节点之间服务交互,说明了基于OSGi的分布式Web应用结构在服务通信方面采用的技术。 知识点六:资源优化和成本节约 通过模块化的分布式部署,可以有效地根据每个模块的实际负载...