1

OSGI を eclipse で使い始めました。Declarative Services の下で、サービスがアクティブ化されると実行されるメソッドが 2 つあることがわかりました。つまり、Activate と Bind です。これら 2 つの違いは何ですか?

サービスの開始時に特定のアクションを実行したい場合、それを Bind メソッドまたは Activate メソッドのどちらに配置しますか?

4

2 に答える 2

2

バインド メソッドは、サービス参照をコンポーネント インスタンス (つまり、コンポーネントが依存するサービス) に挿入するために使用されます。activate メソッド (宣言されている場合) は、コンポーネントが満たされたときに、アクティブ化プロセスの最後のステップで呼び出されます。

したがって、すべての必須の依存関係がその時点で解決されていることがわかっているので、activate メソッドでアクションをコーディングする必要があると思います。

また、宣言型サービス コンポーネント自体はサービスではありませんが、サービスを提供する場合があることに注意してください。

于 2012-05-17T11:07:20.040 に答える
1

コンポーネントがアクティブ化されると、このactivateメソッドが呼び出されます。したがって、これは初期化アクティビティを実行するのに適した時期です。bindメソッドは、コンポーネントが参照するサービスごとに 1 回呼び出されます。したがって、コンポーネントに への参照がある場合、コンポーネントにバインドされた各オブジェクトで のメソッドが呼び出されLogServiceます。その後、メソッドは をフィールドに格納できます。bindLogServiceLogServiceLogService

于 2012-05-17T16:13:37.320 に答える