java blueprint_OSGI Blueprint入门之四
上一篇提及了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入门之四相关推荐
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
[JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...
- 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序
本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...
- java程序员入门先学什么开发者工具
学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率.更优雅的写代码.由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得 ...
- Java学习从入门到精通的学习建议
想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...
- JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...
接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...
- 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记
<Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...
- Java学习从入门到精通-旧版
为什么80%的码农都做不了架构师?>>> Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...
- Java学习从入门到精通
Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...
- 大白话说Java泛型:入门、使用、原理
文章首发于[博客园-陈树义],点击跳转到原文<大白话说Java泛型:入门.使用.原理> 远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都 ...
最新文章
- VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用
- ibatis自动生成插件
- 多线程c语言,如何用C语言实现多线程
- J2EE从头开始__EJB3
- call()和apply()方法(切换上下文)
- 仅坚持了9天:京东今日宣布暂停火车票代购业务
- 如何构建自己的免费无服务器评论框
- matlab 红黑强度图片,matlab图形锐化程序
- Spring AOP 功能使用详解
- 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
- 【TensorFlow-windows】(七) CNN之VGG-net的测试
- appium 处理滑动的方法
- POJ1384Piggy-Bank(DP)
- matlab读取excel里的数据并用imagesc画图
- Android开发之PreferenceActivity和PreferenceFragment
- 成为0.01%!利用TensorFlow.js和深度学习,轻松阅读古草体文字
- USACO 19 FEB Mowing Mischief P 题解
- web开发第三方登陆之微信登陆
- 华为p20nfc怎么复制门禁卡_华为P20手机来刷门禁_如何给P20手机添加绑定门禁卡的方法...
- 中班音乐活动计算机反思,中班音乐优质教案《计算器》含反思
热门文章
- 股市风云:价值成长投资 稳健赢利之道
- 北京信息科技大学考研c语言考试,2018年北京信息科技大学计算机院814数据结构和C语言程序设计[专硕]之C程序设计考研核心题库...
- 阿里云服务器绑定域名,阿里云esc绑定域名,阿里云域名备案
- 20岁后长高增高秘诀
- Springcloud的版本依赖问题(最全,包含springCloud所有的版本)
- python语言的实验心得体会范文_实验心得体会-精选范文
- java实现年会微信签到,签到后在大屏中展示,导出签到信息
- PHP连接MySql/SQLServer数据库
- 计算机中的负数的表示
- linux下限制CPU使用率的3种方法 (转)