立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

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:001149
用户头像

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

关注

评论

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

【网易云信】网易云信 RTC 音频 QoS 综述

网易智企

RTC 实时音视频

CSS奇思妙想之-利用CSS裁剪(clip-path)完成各种图形

肥晨

三周年连更

Viu联合华为HMS生态,共创影音娱乐新体验

HarmonyOS SDK

HMS Core

数据中台建设:千万级的瀑布式,和十万级的迭代式,你会选择哪一个?

tapdata

中台 服务化 Tapdata DaaS 现代数据栈

保险行业如何将质检覆盖率从5%提升至100%?

中关村科金

保险 智能质检

2023年全互联网最新版Java面试突击手册PDF版开源,押题率高达97%

开心学Java

Java 面试 java; 八股文 Java八股文

连接 1 次孤岛,服务 N 个场景(报名中)

tapdata

DaaS

macOS下快速复制文件或文件夹路径的技巧

互联网搬砖工作者

助力春耕:数智驱动现代农业高质量发展

加入高科技仿生人

数字化 农业 数智化 农业农村数字化

PCB阻焊桥存在的DFM(可制造性)问题,华秋一文告诉你

华秋电子

免费领取 | ONES 联合中国信通院发布《中国企业软件研发管理白皮书》

万事ONES

阿里大牛纯手写的微服务入门笔记,从基础到进阶直接封神

做梦都在改BUG

Java 微服务 spring cloud alibaba

多元融合成为音视频技术发展新风向

中关村科金

实时音视频 监管合规

即时通讯系统为什么选择GaussDB(for Redis)?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

百度智能云亮相CCBN 2023,共拓媒体数智化转型新征程

Geek_2d6073

从零到跑通TPC-H:如何快速实现查询计划

MatrixOrigin

分布式数据库 MatrixOrigin MatrixOne TPC-H

GitHub星标48k!蚂蚁金服开源的这份SpringBoot笔记

做梦都在改BUG

Java spring Spring Boot 框架

景区共享电单车如何投放?投放意义?

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电单车投放

云上数据变革:Databend Cloud 正式发布

Databend

超强版干货投递!Milvus 的部署心得、运维秘籍都在这里了!

Zilliz

Milvus Zilliz ChatGPT LLM zillizcloud

PCB生产工艺 | 第十三道主流程之包装

华秋电子

网易云信 RTC 音频 QoS 综述

网易云信

RTC 实时音视频

微服务 - 注册中心和配置中心(Consul)

做梦都在改BUG

Java 微服务 注册中心 配置中心

MLCC是电子工业大米,供需波动导致行业成周期性波动

华秋电子

AIGC的阿克琉斯之踵

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 4 月 PK 榜

即时通讯技术文集(第13期):Web端即时通讯技术精华合集 [共15篇]

JackJiang

网络编程 即时通讯 IM

OneNote 2019 for Mac 中文版附激活工具

真大的脸盆

Mac Mac 软件 笔记应用

物联网常见协议之Amqp协议及使用场景解析

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 4 月 PK 榜

10万字干货:《数字业务连续性提升最佳实践》免费领取|TakinTalks社区

TakinTalks稳定性社区

面试官:Redis有什么持久化策略?

做梦都在改BUG

Java redis 缓存 面试 持久化

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