OSGIバンドルでは、Activateメソッドを持つ多くのコンポーネントを持つことができます。バンドルがアクティブ化された後に呼び出されるシーケンスは何ですか?OSGIバンドル内のコンポーネントのactivateメソッドの呼び出し
答えて
コンポーネントは、すべての必須の参照が存在すると有効になります。特定の時間に複数のコンポーネントを有効にすることができれば、シーケンスの保証はありません。
バンドルの開始レベルが異なる場合、より低い開始レベルのバンドルのすべてのアクティベーションメソッドが、より高い開始レベルのバンドルのアクティベーションメソッドの前に実行されます。
このロジックを使用すると、起動方法シーケンスを制御したり、ログに基づいて何が起きたかを判断できます。
実際には、バンドルは開始レベルではなく依存関係によって注文する必要があります。
あなたの答えはありがたいですが、私の質問は単一バンドル内のコンポーネント内のメソッドをアクティブにすることです。 –
AFAIK、フレームワークは、標準のJavaリフレクションAPIを使用して、@Activate属性を持つクラスのメソッドをクエリします。サービスの依存関係を定義できますが、これがなければほとんどのクラスとそのアクティベータメソッドはソート順に従わないため、ソートされていない順不同で列挙されます。そのように、あなたの質問への答えは、起動メソッドへの呼び出しの順序は未定義です。 –
クリスチャンが言ったように、これはは定義されていませんです。依存関係が満たされると、OSGIはそのサービスをアクティブにします。
2番目の点として、サービスは起動シーケンスに依存してはいけません。彼らがそれをするなら、それは悪い習慣です。これはあなたのプロジェクトに関連するのはなぜですか?おそらく、私たちがあなたの設計を手助けすることができます。
他の人が指摘しているように、これは定義されていません。
しかし、時には、起動中に所定の順序でいくつかのメソッドを呼び出す理由があるとも言われています。あなたの場合は、常に他のすべてを呼び出す単一の "アクティブ化"メソッドを持つことができます。このようにして、あなたの用途に最適な注文ロジックを適用することができます。必要に応じて設定値も考慮に入れることができます。
- 1. OSGIバンドルからの呼び出しデータソース
- 2. OSGI - バンドル間の静的メソッド呼び出し
- 3. OSGiコンポーネント・モデルのバンドル内およびバンドル相互依存性
- 4. OSGIバンドルからメソッドを呼び出す方法は?
- 5. OSGIバンドルでデータソースを呼び出す方法は?
- 6. ローダー内のコントローラーの呼び出しメソッド
- 7. コンパニオンオブジェクト内のメソッドの呼び出し
- 8. React VideoJSコンポーネントのメソッドを別のコンポーネントから呼び出す
- 9. 親コンポーネント内のメソッドを子コンポーネントから呼び出す方法は?
- 10. パラメータ付きコンポーネント内のAngular2呼び出しコンポーネント
- 11. react:親コンポーネントから子コンポーネントのメソッドを呼び出す
- 12. 子コンポーネントから親コンポーネントのメソッドを呼び出す
- 13. 他のコンポーネントのコンポーネント内の関数を呼び出す
- 14. EARパッケージから外部OSGIバンドルを呼び出してください
- 15. 角2 - 別の(サービス)コンポーネントの呼び出しメソッド
- 16. テンプレートからのコンポーネントのAngular2呼び出しメソッド
- 17. OSGi拡張バンドル内のサービスの登録
- 18. OSGiバンドルのSchemacrawler
- 19. OSGiフレームワークの外部からOSGiサービスを呼び出す方法?
- 20. サブビュー内のメソッドを呼び出す
- 21. Javascriptオブジェクト内のメソッドを呼び出す
- 22. TaskClientでactivateメソッドを呼び出すときにjava.lang.NullPointerExceptionを取得する
- 23. Apache Felixで@Activateメソッドが呼び出されない原因は何ですか?
- 24. Java - Countメソッドの呼び出し内のメソッド
- 25. Navigatorがマウントしたコンポーネントのメソッドを呼び出す方法は?
- 26. コントローラからAngularJS 1.5コンポーネントのメソッドを呼び出しますか?
- 27. Vue.jsをクリックしてコンポーネントのメソッドを呼び出す方法
- 28. メソッド内でメソッドを呼び出すruby
- 29. WaitUntilExists()メソッドの呼び出し
- 30. Ruby:initの呼び出しメソッド
遅延コンポーネントの場合、誰かがコンポーネントインスタンスを実際に要求したときにのみ、activateが呼び出されます。 –