上一篇提及了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节点来达到这样的目的。

相应地在引用这个服务列表的bean的类的代码 里,应包含一个list的 setter方法,在Blueprint container发现有此接口 的服务就会用这个setter方法注入到这个bean实 例里。由于服务的动态性,这个list里的服务个数 也是动态变化的。另外,以上节点的member-type属性还可以设为”service-reference”,那么相 应的setter就应是注入list。

java blueprint_OSGI Blueprint入门之四相关推荐

  1. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  2. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  3. java程序员入门先学什么开发者工具

    学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率.更优雅的写代码.由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得 ...

  4. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  5. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  6. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记

    <Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...

  7. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  8. Java学习从入门到精通

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

  9. 大白话说Java泛型:入门、使用、原理

    文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java泛型:入门.使用.原理> 远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都 ...

最新文章

  1. VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用
  2. ibatis自动生成插件
  3. 多线程c语言,如何用C语言实现多线程
  4. J2EE从头开始__EJB3
  5. call()和apply()方法(切换上下文)
  6. 仅坚持了9天:京东今日宣布暂停火车票代购业务
  7. 如何构建自己的免费无服务器评论框
  8. matlab 红黑强度图片,matlab图形锐化程序
  9. Spring AOP 功能使用详解
  10. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
  11. 【TensorFlow-windows】(七) CNN之VGG-net的测试
  12. appium 处理滑动的方法
  13. POJ1384Piggy-Bank(DP)
  14. matlab读取excel里的数据并用imagesc画图
  15. Android开发之PreferenceActivity和PreferenceFragment
  16. 成为0.01%!利用TensorFlow.js和深度学习,轻松阅读古草体文字
  17. USACO 19 FEB Mowing Mischief P 题解
  18. web开发第三方登陆之微信登陆
  19. 华为p20nfc怎么复制门禁卡_华为P20手机来刷门禁_如何给P20手机添加绑定门禁卡的方法...
  20. 中班音乐活动计算机反思,中班音乐优质教案《计算器》含反思

热门文章

  1. 股市风云:价值成长投资 稳健赢利之道
  2. 北京信息科技大学考研c语言考试,2018年北京信息科技大学计算机院814数据结构和C语言程序设计[专硕]之C程序设计考研核心题库...
  3. 阿里云服务器绑定域名,阿里云esc绑定域名,阿里云域名备案
  4. 20岁后长高增高秘诀
  5. Springcloud的版本依赖问题(最全,包含springCloud所有的版本)
  6. python语言的实验心得体会范文_实验心得体会-精选范文
  7. java实现年会微信签到,签到后在大屏中展示,导出签到信息
  8. PHP连接MySql/SQLServer数据库
  9. 计算机中的负数的表示
  10. linux下限制CPU使用率的3种方法 (转)