2017-04-22 5 views
1

このような状況を考えてみましょう。 BundleAはFooサービスを提供し、BundleBはFooサービスを使用します。ある時点で、BundleBはコードfoo.foo()を実行しています - Fooサービスのfooメソッドは実行中ですが、まだ完了していません。中古品の束を止めたらどうなるのですか?

この時点で何が起こるか(fooメソッドがまだ実行中) OSGIフレームワークはBunldeAを停止するコマンドを取得しますか?フレームワークは メソッドfooが完了するまで待つでしょうか? OSGiフレームワークとして、私はFelixを使用します。

答えて

3

私は、バンドルBは、1つのスレッドでメソッドを呼び出すされ、その後、他の誰かが別のスレッドでバンドルAを停止するためのフレームワークにコマンドを送信しますと仮定しています。

フレームワークは、呼び出しが完了するまで待機しません。それはバンドルを停止します。バンドルが明示的にこれをしない場合でも、サービスは登録解除されます。進行中の通話はそのまま継続されます。まだ何が行われているかによって、正常に完了するか、またはある時点で呼び出し元に(実行時の)例外がスローされます(すべてそのメソッドの実際の実装に依存します)。

関連する問題