1 versioning service binding osgi
我目前正在评估osgi(使用felix 4.3实现)来管理服务的版本.
我一直在创建以下捆绑包:
bundle-api(版本1.0.0)定义接口xyzSomeService:它在版本1.0.0中导出xyz
实现SomeService(v 1.0.0)的bundle-impl(版本1.0.0),在规范版本1.0.0中导入包xyz并注册服务
bundle-api(版本2.0.0)定义接口xyzSomeService:它在版本2.0.0中导出xyz
实现SomeService(v 2.0.0)的bundle-impl(版本2.0.0),在规范版本2.0.0中导入包xyz并注册服务
现在,我有一个客户端,bundle-client(版本1.0.0),它在版本规范-1.0.0中导入bundle-api的xyz.
如何在版本1.0.0中获取xyzSomeService的服务?
目前,在安装/激活时:bundle-api 1.0.0 bundle-impl 1.0.0 bundle-api 2.0.0 bundle-impl 2.0.0 bundle-client 1.0.0
当启动bundle-client时,它会查询可用的xyySomeService.我得到了可用服务的答案:bundle-impl 1.0.0和bundle-impl 2.0.0
我想只获得与版本1.0.0匹配的服务实现.
我该怎么办?
ps:目前,我将null设置为过滤值.
您使用什么代码或机制来查询服务?OSGi的自动提供服务的兼容性过滤,这意味着,如果你的客户进口1.0版API的那么它将只能看到工具1.0版本,和服务,如果您的客户端进口API的2.0版本,那么它只能看到实现2.0版服务....等
但是,有一个方法调用getAllServiceReferences()显式关闭此兼容性检查,并可用于获取所有版本的所有服务.在99%的情况下,这不是你想要做的.如果您已经使用过,请getAllServiceReferences()尝试更改为getServiceReferences().
如果您正在以其他方式查找服务,那么我需要更多细节来帮助您.
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |