Pau*_*rer 5 spring osgi bundle equinox springsource-dm-server
我在发现一些未被激活的OSGi包提供的服务时遇到问题.让我来描述一下情况:
我似乎无法启动捆绑包B,C或D,因此注册他们的服务.强制它们通过添加它们来启动config.ini
不是一个选项,因为可以在应用程序中安装任意数量的bundle(通过类似Eclipse p2的更新机制)来实现接口X.
该应用程序是一个基于Eclipse 3.5的RCP应用程序,使用Spring 2.5.6和Spring DM 1.2.1.
如何强制激活这些捆绑包?
你真正拥有的是依赖层次结构问题,你提出的hacky解决方案实际上只是对基础问题的创可贴.
您应该考虑的是系统的体系结构,因为您拥有的是循环依赖(re:在您的原始帖子的评论中进行讨论).你有(喜欢或不喜欢)A需要来自(在某种意义上取决于)B和C的服务.同时,B和C直接依赖于A,因此,直到A出现才能开始.
在最好的情况下,你可以用B和C编写代码来监听A的存在,但这最好掩盖了(正如我所提到的)潜在的问题.你应该考虑的是将A分成两个束,我们称之为A1和A2.
A1应提供B和C所需的接口(取决于).A2应该有服务B和C所依赖的监听器.在启动时,如果B和C是必需的服务,则必须运行A1,但A2可以在以后的任何时间启动,并且一切都应该有效.
归档时间: |
|
查看次数: |
2336 次 |
最近记录: |