Spring Dynamic Modules 达到 1.0 版本!

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

好吧,这比我们最初预期的要花费更长的时间,但我很高兴地说,Spring Dynamic Modules 项目今天达到了其 1.0 版本里程碑。当我于 2006 年 9 月首次发布有关此主题的文章(“Spring OSGi 支持势头强劲”)时,最初的规范只是 Spring Framework 的一个问题附件,并且与更广泛的 OSGi 社区的联系才刚刚开始形成。

快进十八个月,Spring Dynamic Modules 已经成为 Spring 产品组合中的一个成熟项目,SpringSource、BEA 和 Oracle 的提交者都参与其中。BEA 和 Oracle 都在使用 Spring Dynamic Modules 来构建自己的基于 OSGi 的产品(例如,请参阅“WebLogic Event Server - 我们为何使用 Spring”),Spring Dynamic Modules 讨论组已有近 1000 名成员。OSGi 联盟本身还成立了一个企业专家组,SpringSource 是该组织的一个活跃成员。

每当我们与会讨论 OSGi 和 Spring Dynamic Modules 时,都能感受到极大的兴趣。那么,这一切轰动究竟是怎么回事呢?

OSGi 服务平台是一个久经考验的轻量级运行时,提供了一个“Java 的动态模块系统”。它被用于从嵌入式设备、汽车和电信应用,到 IBM、BEA 和 Oracle 等公司的大型企业中间件产品的基础。Spring Dynamic Modules 专注于使您能够在构建自己的企业应用程序时利用 OSGi 服务平台。使用 Spring Dynamic Modules 构建并在 OSGi 服务平台上运行的应用程序,由一组同等的 Spring 应用程序上下文(每个 OSGi 捆绑包一个)组成,这些应用程序上下文通过 OSGi 服务注册表进行交互。这是一种面向服务的体系结构,但完全位于您的虚拟机内部,使用常规的 Java 引用来访问服务。以这种方式构建的应用程序的好处包括:

  • 强大的模块化:每个模块的内部都是私有的,只有您选择导出的包和 bean(服务)才能被其他模块公开访问。
  • 动态模块生命周期:您可以使用标准的 OSGi 服务平台生命周期设施独立地安装、卸载、启动、停止和更新每个模块(应用程序上下文)。Spring Dynamic Modules 提供对跨越模块边界的服务引用的智能管理,因此即使提供服务的模块已原地更新,您也可以继续使用稳定的引用。
  • 支持模块版本控制。可以同时部署同一 Java 包(以及因此的库)的多个版本。OSGi 平台负责将这些库的用户绑定到合适的版本,并确保您只看到实现版本兼容接口的服务。
  • 可对已安装的模块、它们导入和导出的服务与包,以及模块在运行时如何连接在一起进行操作洞察。
在开发过程中,能够原地更新一个模块而其他模块保持运行状态,可以极大地提高生产力。

随着 1.0 版本的发布,我们在模块生命周期和服务集成方面拥有了一个可靠的解决方案。但在 OSGi 服务平台上使用现有(非为在 OSGi 上运行而编写)的企业库时,仍然存在与类和资源加载以及可见性相关的陷阱,需要谨慎处理。我们相信,在最近发布的 Spring Framework 2.5 中,我们已经解决了所有这些问题。Spring Dynamic Modules 下一版本的重点将是为其他常用的企业库提供实用的解决方案,从而大大简化在 OSGi 上运行的、由 Spring 驱动的 Web 应用程序的编写。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有