写点什么

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

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

关注

评论

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

“双11”购物狂欢节,所有女生走进了谁的直播间?

博睿数据

APM AIOPS 拨测 直播 用户体验

mongodb 源码实现系列 - 网络传输层模块实现四

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 高性能 分布式数据库mongodb

《迅雷链精品课》第三课:区块链主流框架分析

迅雷链

区块链 区块链方案 区块链+ 区块链应用

WE大会上,科学家们是怎样治愈“小破球”的?

脑极体

面试,到底在考察什么?

程序员架构进阶

面试 方法论

高交会第一天,高新技术成焦点

13530558032

Oracle、NoSQL和NewSQL 数据库技术对比

VoltDB

数据库 大数据 数据分析 物联网

Github标星67.9k的微服务架构以及架构设计模式笔记我真的爱了

Java架构之路

Java 程序员 架构 面试 编程语言

三千字轻松入门TensorFlow 2

计算机与AI

tensorflow 学习

第六周总结

balsamspear

极客大学架构师训练营

LAXCUS 大数据集群操作系统:一个分布式分时共享 E 级系统软件(七)

陈泽云

人工智能 大数据 算法

多线程并发主题-ThreadLocalRandom类

公众号:程序猿成神之路

Java 并发编程 线程

【涂鸦物联网足迹】涂鸦云平台接口列表

IoT云工坊

人工智能 接口 物联网 API 智能家居

C++多元组tuple使用方法?你熟悉吗?快来看看吧

良知犹存

c++

【Mycat】作为Mycat核心开发者,怎能不来一波Mycat系列文章?

冰河

分布式事务 分布式数据库 系统架构 分布式存储 mycat

Pulsar Summit Asia 2020 | 场景案例论坛(上):多行业,多场景

Apache Pulsar

大数据 开源 Apache Pulsar

为什么我就面试阿里P6,好不容易过2面,3面来个架构师来吊打我?

小Q

Java 学习 程序员 架构 面试

高交会科技盛宴:“科技改变生活,创新驱动发展”

13530558032

mPaaS 客户端问题排查之漫长的 3s 等待之谜

阿里云金融线TAM SRE专家服务团队

mPaaS

利用下班时间,我两星期完成了redis入门与进阶

小松漫步

数据库 redis

Serverless 是一种思想状态

donghui

Serverless

第六周课后练习

balsamspear

极客大学架构师训练营

DeFi质押挖矿系统开发技术

薇電13242772558

区块链 defi

LAXCUS 大数据集群操作系统:一个分布式分时共享 E 级系统软件(六)

陈泽云

人工智能 大数据 算法

我就是增发、健身、养猫、社交通通拥有的锦鲤本鲤

脑极体

甲方日常 49

句子

工作 随笔杂谈 日常

极客大学 - 架构师训练营 第八周

9527

链表交集问题与DataNode宕机HDFS处理时序

garlic

极客大学架构师训练营

什么?还不懂c++vector的用法,你凭什么勇气来的!

良知犹存

c++

[Pulsar 社区周报] 2020-10-31 ~ 2020-11-06

Apache Pulsar

大数据 开源

微众银行大数据平台建设方案

康月牙

大数据 开源 金融 平台 微众银行

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