`

DS的reference属性解析

阅读更多

 这里是对上一篇blog: http://winseclone.iteye.com/blog/1786637 的补充。说明DS声明服务XML中reference节点属性的作用。

 

这里reference的几个属性cardinality和policy是比较难理解的。

    cardinality(基数),该属性是DS为啥这么牛逼的真正所在之一。该属性控制Service数量的上下限,达到这个下限后该Component才可用。

    这里说一下“上限”,假设选的是0..1或1..1,就算你的运行时注册了n个Service,框架也只会选择其中一个!至于真正使用那个,不是很确定!所以最好不要这样用!

  • 0..1: optional and singular, "zero or one"
  • 1..1: mandatory and singular, "exactly one"
  • 0..n: optional and multiple, "zero to many"
  • 1..n: mandatory and multiple, "one to many" or "at least one"

上限是1的情况下,找到一个Service后就被break了!所以,在这种“基数”的配置下,不推荐注册多个Service。如果需要运行时替换服务,首先stop原来的服务插件,然后再start新服务的插件。

在0..1或1..1的策略下,也不推荐在Component(Helper)的插件同时绑定一个Service实现,不利于服务的替代!

 


 

 

    policy(策略)可选值为:staticdynamic, 静态和动态的意思。如果是静态的话,如果Service重新加载,Component也会重新加载。而dynamic只会调用相应的setService()和unsetService()方法。

 

动态dynamic策略 写道
osgi> register user-service : sample.http.ds.user.cn.UserServiceImpl@19e5e6b
activate sample.http.ds.UserHelper@48cbd6

osgi> ls
All Components:
ID State Component Name Located in bundle
1 Active sample.http.ds.UserHelper sample.http(bid=41)
2 Active sample.http.en.userService sample.http.ds.user.en(bid=44)
3 Active sample.http.cn.userService sample.http.ds.user.cn(bid=45)

osgi> stop 45
register user-service : sample.http.ds.user.en.UserServiceImpl@406c4
unregister user-service : sample.http.ds.user.cn.UserServiceImpl@19e5e6b

 注意: 这里的顺序!先register后再unregister!所以原来的UserHelper需要进行修改才行,不然,动态变更后,service就变成null咯!

 

静态static策略 写道
osgi> register user-service : sample.http.ds.user.cn.UserServiceImpl@18f07f1
activate sample.http.ds.UserHelper@1526a45

osgi> ls
All Components:
ID State Component Name Located in bundle
1 Active sample.http.ds.UserHelper sample.http(bid=41)
2 Active sample.http.en.userService sample.http.ds.user.en(bid=44)
3 Active sample.http.cn.userService sample.http.ds.user.cn(bid=45)

osgi> stop 45
deactivate sample.http.ds.UserHelper@1526a45
unregister user-service : sample.http.ds.user.cn.UserServiceImpl@18f07f1
register user-service : sample.http.ds.user.en.UserServiceImpl@5c8c05
activate sample.http.ds.UserHelper@1ecade2

   

从上面两个从Console命令窗口中的可以看到,dynamic策略在Service注册后,不会deactivate钝化Component。而static策略会先钝化Component后在unregsiter注销Service。

 

分享到:
评论

相关推荐

    3DS文件结构解析及程序

    3DS文件结构解析及程序,对3DS文件结构做了详细的描述,并有示例代码(C++)

    DS1820温度传感器解析

    DS1820温度传感器解析

    3ds 文件解析与显示

    毕业论文,详细描述了 3ds 文件的结构,已经怎么用 C++(VC) 借助 OPENGL 进行渲染和 应用

    DS2100N_DS2400N Reference Manual.pdf

    DS2100N_DS2400N Reference Manual.pdf

    Python-dsstore:用于解析.DS_Store文件并提取文件名的库

    Python .DS_Store解析器 该存储库包含Apple的.DS_Store文件格式的解析器。 ./samples/目录中包含一个CTF格式的示例文件,您可以使用python3 main.py ./samples/.DS_Store.ctf尝试解析器。 这是我的博客文章,试图...

    3ds Max MAXScript Reference

    3ds Max 8.0 MAXScript Reference

    .3ds模型解析源码

    是一个老外写的,解析.3ds文件,并进行渲染,用opengl做的,可以直接运行,还是不错,可以用来了解.3ds 模型结构

    3DS格式详解及解析源代码

    文件包括: 3ds Format.doc 3DS读取研究.doc 从3DS文件中导入网格数据.doc 源码: 一个完善的读取3DS文件例子.rar 3DS+File+Loader.rar 一款3D Max插件,导出.X文件PandaDirectXMaxExporter.rar

    ds_store-用于Rust的.DS_Store解析器-Rust开发

    生锈的.DS_Store解析器获取库! 在您的Cargo.toml文件中添加类似的内容:[dependencies] ds_store =“ 0.2”用法extern crate ds_store生锈的.DS_Store解析器获取库! 在您的Cargo.toml文件中添加类似的内容:...

    51单片机与DS18B20解析.ppt

    51单片机与DS18B20解析.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~

    DS_Store 文件泄露

    是一个 .DS_Store 文件泄漏利用脚本,它解析.DS_Store文件并递归地下载文件到本地。 .DS_Store是Mac下Finder用来保存如何展示文件/文件夹 的数据文件(即文件夹的显示属性的,和比文件图标的摆放位置),每个文件夹...

    3DS文件格式分析中文版及解析源代码

    3DS文件格式分析中文版及解析源代码 简介: 1、读取规则 3ds文件的读取规则如下: 字节:直接读取; 字:先读低位字节,后读高位字节,如ed 3c读出后的字为3c ed; 双字:先读低位字,后读高位字,如ed 3c 25 43读出...

    读取3ds文件的源代码

    此代码为读取3ds文件的源代码,这是我从工作积累来的,希望对各位有所帮助。

    canopen协议全套DS301,DS302,DS303,DS306,DS401,DS402,EDS

    canopen协议全套DS301,DS302,DS303,DS306,DS401,DS402,EDS

    ARM最新开发工具DS-5入门解析说明

    DS-5是ARM最新主推的开发工具,配合DSTREAM仿真器,可以进行功能强大的调试、仿真、跟踪功能。

    3ds文件格式分析

    很全面的3ds文件格式分析,自己写3ds模型加载程序可以参考

    DS18B20英文手册

    DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度传感器手册DS18B20温度...

    3ds 文件的格式详解及源代码

    3ds 文件的格式详解, 详细说明了3ds文件的组织结构,及其每个块所对应的含义, 还附加了对这个文件的解读的源代码VC环境下的

    3ds Max制作赛车动画流程解析.doc

    3ds Max制作赛车动画流程解析.doc3ds Max制作赛车动画流程解析.doc3ds Max制作赛车动画流程解析.doc3ds Max制作赛车动画流程解析.doc3ds Max制作赛车动画流程解析.doc3ds Max制作赛车动画流程解析.doc

    IBM DS系列中低端存储部件更换手册DS3K DS5K DS4K

    IBM DS系列中低端存储部件更换手册 IBM DS系列中低端存储部件更换手册 IBM DS系列中低端存储部件更换手册 IBM DS系列中低端存储部件更换手册 IBM DS系列中低端存储部件更换手册 IBM DS系列中低端存储部件更换手册 ...

Global site tag (gtag.js) - Google Analytics