OSGi 服务平台 4.2 版规范的早期草案现已发布

工程 | Adrian Colyer | 2008年9月1日 | ...

OSGi Alliance 发布了 服务平台规范 4.2 版的早期草案 SpringSource 员工是联盟内核心平台专家组 (CPEG) 和企业专家组 (EEG) 的积极成员。我个人主要参与 EEG,特别是 RFC 124“OSGi 的组件模型”。

RFC 124 是 Spring Dynamic Modules 核心思想的标准化。如果你查看配置模式,你会发现它与 Spring Dynamic Modules (DM) 提供的“osgi”命名空间非常相似。RFC 124 汇集了我们在过去几年开发 Spring DM 的经验,并结合了核心和企业专家组其他成员的一些关键见解,从而产生了一个既基于真实世界经验又与 OSGi 服务平台本身紧密集成的规范。非常感谢 Spring DM 开发团队:- Costin Leau、Oracle 的 Hal Hildebrand 和 BEA(现为 Oracle)的 Andy Piper,感谢他们在帮助开发和测试 Spring DM 以及随后帮助我们推动该模型作为 OSGi 服务平台标准化基础方面所做的辛勤工作。

试图标准化 Spring DM 会带来一个有趣的难题。在 Spring DM 中,定义组件并将其作为服务公开到服务注册表中很容易。例如

<bean id="myBean" class="com.xyz.SomeClass">
<osgi:service ref="myBean" interface="org.xyz.SomeInterface"/>

定义了一个名为“myBean”的 bean(只是一个普通的 Spring bean 定义),并将其在 SomeInterface 接口下的 OSGi 服务注册表中公开。

“osgi:service”元素来自 Spring DM,但“bean”元素来自核心 Spring Beans 模式。一个基于 Spring DM 命名空间元素但无法定义它们所引用组件的标准将毫无用处。因此,RFC 124 是一个基于 Spring DM 命名空间元素和语义以及 Spring 本身核心(即 bean 模式及其语义)的标准。在 RFC 124 中,组件是使用“component”元素定义的,但除了将 bean 改名为 component 之外,你会发现属性和语义都非常熟悉。

以下是基于 RFC 124 的相同组件和服务注册的标准化定义

<component id="myComponent" class="com.xyz.SomeClass">
<service ref="myComponent" interface="org.xyz.SomeInterface"/>

这对 Spring DM 意味着什么?随着标准尘埃落定(某些领域仍有工作要做),我们将在 Spring DM 中实现 RFC 124 的 RI(就 Spring 和 Spring DM 而言,它“只是另一个命名空间”,我们可以轻松地将其映射到现有功能)。SpringSource 应用程序平台目前支持基于 Spring DM 的编程模型,供那些希望利用其 OSGi 功能的人使用,当然也会更新以包含 RI,为基于 OSGi 的企业应用程序提供基于标准的编程和配置模型。

企业专家组的下一次会议将在几周后举行,届时我们将继续完善该规范。为规范提供 RI 的“编码训练营”计划于今年晚些时候举行。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有