Jam*_*arr 8 java osgi bundles equinox
一旦从捆绑上下文中检索到OSGi服务的实例,它在服务停止时是否会失效?
我的初步测试表明即使在服务包停止后也可以使用服务实例,这与我对OSGi的动态性质的理解相矛盾.
我想这可以归结为从OSGi容器中的另一个包中检索服务(通过ServiceTracker)实际上是什么,它是创建一个新实例还是它给你一个指向容器中注册的实例的指针?
服务停止后使用服务实例是否有任何危险?
Pav*_*hos 5
这是一个非常好的问题,所以我深入研究了规范,寻找明确的答案.事实证明,整个部分都在讨论这个问题 - 请参阅OSGi服务平台核心规范第4版4.2版第132页开始的第5.4节陈旧引用.
根据规范回答您的问题:
未定义的服务的行为是未定义的.此类服务可能会继续正常运作或自行决定是否例外.
并防止潜在的问题:
Bundles必须侦听Framework生成的事件,以清理和删除陈旧的引用.
该规范还提供了一些如何最小化陈旧引用的后果的技巧.
归档时间:
16 年,5 月 前
查看次数:
2251 次
最近记录:
16 年,3 月 前