Osgi 持久声明性服务激活方法
我试图理解在激活方法无限期阻塞的情况下应该发生什么,但我没有找到答案。另一方面,Felix SCR有Osgi 持久声明性服务激活方法,osgi,osgi-ds,Osgi,Osgi Ds,我试图理解在激活方法无限期阻塞的情况下应该发生什么,但我没有找到答案。另一方面,Felix SCR有ds.lock.timeout.millides和ds.stop.timeout.millides属性来管理激活/停用超时,对吗 问题: 为什么OSGi规范没有提到激活/停用死锁管理 如果DS需要更多的时间来运行其激活方法,那么增加默认的SCRDS.lock.timeout.millides值是否明智?还是完全避免使用activate方法,在专用线程中使用context.registerServ
ds.lock.timeout.millides
和ds.stop.timeout.millides
属性来管理激活/停用超时,对吗
问题:
- 为什么OSGi规范没有提到激活/停用死锁管理
- 如果DS需要更多的时间来运行其激活方法,那么增加默认的SCR
值是否明智?还是完全避免使用activate方法,在专用线程中使用DS.lock.timeout.millides
手动注册服务更好context.registerService
@组件(立即=真)
公共类FooImpl实现Foo{
承诺;
@激活void Activate(){promise=begin();}
@凌驾
public void foo(){promise.get().foo();}
}
这种技术的优点是它允许许多初始化并行进行
你需要的代表团有点难看。如果性能不太重要,您可以轻松创建一个代理来执行实际工作
@Component(immediate=true)
public class FooImpl implements Foo {
Promise<Foo> promise;
@Activate void activate() { promise = begin(); }
@Override
public void foo() { promise.get().foo(); }
}