NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Spring - OSGi 集成项目 Milestone 1 发布

  • 2007-04-21
  • 本文字数:1163 字

    阅读完需:约 4 分钟

Spring - OSGi 项目的第一个里程碑版本近期刚刚发布,该项目提供了将 Spring 应用部署到 OSGi 环境的支持。由于 OSGi 的重点在于模块的动态化管理,这给 Spring 的集成团队带来了很多特殊的挑战。

采用 OSGi 的最大挑战之一就是处理其动态本质。在应用程序中,服务(以简单对象实例形式存在)加进来移出去,而你的应用必须对其进行处理。解决方法并不是很直截了当的,需要根据不同的实际情况而采用不同的处理方式,并且如同异常处理和事务处理一样,需要应用级别的全局作用域。在模块化的过程中,类装载方式的限制会显得更加突出,而这种限制与 AOP 的合并则会带来更大的麻烦:开发人员不得不另觅蹊径,但这样一来,就会把 OSGi 带来的好处扔的一干二净。这只是我们在 Spring-OSGi 里面正在处理的事情中的很少一部分而已,在最终版本中,肯定会与 OSGi 平滑相接。

这个发布版的部分核心特性包括:

OSGi 应用上下文(OSGi Application Context)
尽管 OSGi 采用的是基于 bundle——也就是独立模块——的架构,但 Spring-OSGi 增加了应用级别的上下文,这样开发人员就可以通过它对存放整个应用的 OSGi 上下文进行访问。

对资源的抽象(Resource Abstraction)
OSGi 向 classpath 中加入了一个抽象层,在该层中有一个 URL scheme,它会根据实现的不同而变化。Spring-OSGi 对这个 scheme 进行了封装,并提供了一个很轻便的查询接口。

动态服务支持(Dynamic Service Support)
通过 XML 配置,把任何对象转换成 OSGi 服务都是轻而易举的事情。

集成测试(Integration Testing)
Spring-OSGi 在 JUnit 的基础上,添加了一个用于测试的微架构,这样一来,从 IDE 中运行需要在容器中执行的测试就会更加简单了。

Hal Hilderbrand 指出,对 JUnit 的支持尤其引人注目

从根本上说,任何有关容器内测试(In-container Testing)的问题都可以归结于如何将测试在容器内运行起来。我们首先必须要配置并启动容器,当然,需要部署测试代码(在 OSGi 容器中,则需要部署测试场景所需的 bundle),然后就剩下 JUnit 测试了。接下来我们必须要从容器外触发测试的运行,并通过某些方式得到测试的运行结果。Costin 的框架很漂亮的解决了这一点,它在同一个进程中配置并启动 OSGi 容器,同时把所有的 JUnit 测试类包装到一个自动生成的 OSGi bundle 中。其结果就是,现在的容器内测试可以完全和任何 JUnit 测试一样运行 - 用 Ant 或者 Maven,或任何一款你所偏爱的 IDE。正如我所说过的一样,这项功能非常酷,你应该亲身体验一下来确信这一点。甚至没有任何容器曾经向它靠拢过。

您可以通过此链接查看英文原文

译者简介:李剑中国Eclipse 社区插件开发版版主,在JavaEye 拥有 RCP 专栏, 北航软件工程硕士。现就职于 Ethos ,热衷于设计模式,敏捷软件开发的研究与实践。为 InfoQ 中文站贡献内容,请邮件至 china-editorial@infoq.com

2007-04-21 20:001065
用户头像

发布了 197 篇内容, 共 52.5 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

2024北京国际光刻设备及光掩膜技术展览会

吹吹晚风

林旅强 | AI+开源时代 - 开发者与治理者的机遇与挑战

开源雨林

人工智能 开源 开发者 超级个体

对话在行人 | 微乘科技:升级数智底座,从管控向“管理+服务”转变

用友BIP

2023全球商业创新大会 对话在行人

Vulkan 同步

江湖修行

android OpenGL ES 渲染 移动端开发 vulkan

叮!你有一份1024程序员节的通关秘籍待查收!

飞桨PaddlePaddle

1024程序员节

2024北京国际机器视觉展览会

吹吹晚风

专业CAD建模软件 BricsCAD 24激活最新版

胖墩儿不胖y

Mac软件 cad cad软件

Mobpush智能化精准推送,助力求职者快人一步

MobTech袤博科技

智能推送

Mobpush厂商通道回执配置指南

MobTech袤博科技

智能推送

EVE-NG安装设备组件

小魏写代码

从实时数据库转战时序数据库,他陪伴 TDengine 从 1.0 走到 3.0

TDengine

时序数据库 ​TDengine

2024北京国际光学镀膜技术及设备展览会

吹吹晚风

文件夹数据同步 Sync Folders Pro中文免激活版

mac大玩家j

Mac软件 同步工具 备份同步软件

Java IO 与 NIO:高效的输入输出操作探究

程序那些事

Java 程序那些事 面试秘籍

定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%

MobTech袤博科技

智能推送

2024北京国际光电传感技术应用展览会

吹吹晚风

2024北京国际激光技术及智能制造展览会

吹吹晚风

QCN9274, QCN6274, QCN9074, QCN9024: Leading the intelligent revolution in the future

wifi6-yiyi

水务行业管理与服务数智化升级,用友Fast by BIP在行!

用友BIP

Fast by BIP 水务行业

浅谈东数西算战略中,发挥算网大脑作用的4个关键点

鲸品堂

东数西算 算力网络 企业号10月PK榜

2024北京国际测控技术与仪器展览会

吹吹晚风

2024北京国际红外技术及应用展览会

吹吹晚风

城投行业融资迈向“筹融用管还评”卓越循环,用友Fast by BIP 很在行

用友BIP

Fast by BIP 城投行业

财政部办公厅发布公立医院内控建设征求意见函 信息化成为内控建设重要抓手

用友BIP

数智医疗

太强了!三种方案优化 2000w 数据大表!

互联网工科生

数据库

Spring - OSGi集成项目Milestone 1发布_Java_James Kao_InfoQ精选文章