当捆绑使用的服务停止时会发生什么
What happens when bundle of used serice is stopped
让我们考虑一下这种情况。 BundleA 提供 Foo 服务,BundleB 使用 Foo 服务。在某个时间点,BundleB 正在执行代码 foo.foo()
- Foo 服务的方法 foo 正在执行但尚未完成。
如果此时(foo 方法仍在执行)会发生什么
OSGI 框架获取停止 BunldeA 的命令?框架会等到
方法foo完成了吗?作为 OSGi 框架,我使用 Felix。
我假设 bundle B 在一个线程上调用该方法,然后其他人向框架发送命令以在另一个线程上停止 bundle A。
框架不会等到调用完成。它会停止 bundle,这也意味着(即使 bundle 没有明确这样做)服务将被注销。正在进行的通话将继续进行。根据它仍然在做什么,它可能会正常完成,或者在某个时候向调用者抛出一个(运行时)异常(全部取决于该方法的实际实现)。
让我们考虑一下这种情况。 BundleA 提供 Foo 服务,BundleB 使用 Foo 服务。在某个时间点,BundleB 正在执行代码 foo.foo()
- Foo 服务的方法 foo 正在执行但尚未完成。
如果此时(foo 方法仍在执行)会发生什么 OSGI 框架获取停止 BunldeA 的命令?框架会等到 方法foo完成了吗?作为 OSGi 框架,我使用 Felix。
我假设 bundle B 在一个线程上调用该方法,然后其他人向框架发送命令以在另一个线程上停止 bundle A。
框架不会等到调用完成。它会停止 bundle,这也意味着(即使 bundle 没有明确这样做)服务将被注销。正在进行的通话将继续进行。根据它仍然在做什么,它可能会正常完成,或者在某个时候向调用者抛出一个(运行时)异常(全部取决于该方法的实际实现)。