我想到了一个智能系统,它可以动态地在可用的 OSGi 服务中进行选择。也就是说,根据一些运行时参数选择一个实现或另一个实现。例如,通知正在运行的算法在几次迭代后更改运算符,或者取决于系统中的负载平衡或其他。
while(stopCriterion){
operator.doSomething(); //There exist many operator implementations
}
我的第一种方法是使用 DS 公开服务并使用 0..n 和动态策略绑定服务。然后,从外部智能组件通知算法在每次迭代中使用哪个服务(也许使用EventAdmin?)。
operator[selected].doSomething();
当必须执行具有许多不同服务实现的许多实验时,这可以帮助我降低复杂性。另外,我计划使用带有Eclipse 通信框架的远程服务规范来研究分布式算法和那些东西,所以在执行时动态出现新的实现也是可能的
但是,我不知道这是一个好主意还是存在另一种更好的机制来动态选择使用哪个实现。我认为使用ServiceTracker代替 DS 不是一个好的选择,但我愿意接受建议 :)
提前致谢。