让我们考虑一下这种情况。BundleA 提供 Foo 服务,BundleB 使用 Foo 服务。在某个时间点,BundleB 正在执行代码foo.foo()
- Foo 服务的方法 foo 正在执行但尚未完成。
如果此时(当 foo 方法仍在执行时)OSGI 框架获得停止 BunldeA 的命令会发生什么?框架会等到方法 foo 完成吗?作为 OSGi 框架,我使用 Felix。
我假设包 B 在一个线程上调用该方法,然后其他人向框架发送命令以在不同的线程上停止包 A。
框架不会等到调用完成。它将停止捆绑,这也意味着(即使捆绑没有明确这样做)服务将被取消注册。正在进行的呼叫将继续。根据它仍然执行的操作,它可能会正常完成,或者在某个时候向调用者抛出(运行时)异常(所有这些都取决于该方法的实际实现)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句