上一篇提及了OSGI service的发布和引用,在 Blueprint里,服务的发布和引用是最常用的一种 最佳实践,通过借助服务引用这样松散的藕合方 法,可以让OSGI的动态性发挥得淋漓尽致。
一些较低层的,细粒度的服务引用可以注入到 bean里,再将这个bean发布出更高层次的,粗粒 度的服务,而Blueprint container将会通过监听 来自OSGI framework的事件,跟踪这些服务的可 用性,当某服务mandatory地依赖那些失去可用 性的服务时,它也将会被Blueprint container从 OSGI framework上撤下来。而当这些被依赖服务 恢复可用时,上层的服务又会被重新发布出来。 从这个角度来看,OSGI也是一个SOA的实现。
这样的动态组装的服务使得提供服务的bundle不 再需要关注启动的次序(start level)了,而这恰 恰是很多习惯直接写代码的方式(例如用 servicelistener或servicetracker来组装服务)的 朋友经常考虑的问题,用了Blueprint就基本上不 必考虑了。
当我们需要引用多个实现同一接口的OSGI service(没有这样的需求?请参考OSGI的 whiteboard pattern)时,Blueprint还提供了 reference-list节点来达到这样的目的。
<reference-list id=”RefList1” interface=”com.ponder.ICoder” member-type=”service-object”/>
相应地在引用这个服务列表的bean的类的代码 里,应包含一个list<com.ponder.ICoder>的 setter方法,在Blueprint container发现有此接口 的服务就会用这个setter方法注入到这个bean实 例里。由于服务的动态性,这个list里的服务个数 也是动态变化的。另外,以上节点的member-type属性还可以设为”service-reference”,那么相 应的setter就应是注入list<ServiceReference>。
分享到:
相关推荐
OSGi的入门资料,网上找的,初探OSGi 的全文
OSGi的入门教程,帮助初学者快速了解OSGi的定义、用途及组成。
强大的OSGI框架入门和例子,看看eclipse就知道OSGI有多强大了。希望对大家有用!
OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践
NULL 博文链接:https://conkeyn.iteye.com/blog/2113824
osgi-blueprint-helloworld 概述 一个使用OSGI蓝图容器规范的非常简单的HelloWorld示例。 想要查询更多的信息: osgi-blueprint-helloworld-api 应用程序API osgi-blueprint-helloworld-server 发布服务以供...
Spring OSGI 快速入门中文教程
OSGI简单入门.doc
osgi webservice入门
OSGI入门和整合Spring OSGI入门和整合Spring
spring-osgi 入门手册和代码 spring-osgi 入门手册和代码 spring-osgi 入门手册和代码 spring-osgi 入门手册和代码
总结了osgi服务发布和获取的多种方式。
Spring OSGi 入门.pdf Spring OSGi 入门.pdf
OSGI入门和整合Spring + OSGI进阶 + OSGI实战
OSGi 入门级教程OSGi 入门级教程OSGi 入门级教程OSGi 入门级教程中文版
blueprint-osgi-bundle
关于SOA中热门技术OSGI的入门样例的经典版本,供对需要进行ERP设计和学习的入门读者使用的经典
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...
OSGI进阶.pdf,OSGI实战.pdf,OSGI入门和整合Spring.pdf