OSGI を eclipse で使い始めました。Declarative Services の下で、サービスがアクティブ化されると実行されるメソッドが 2 つあることがわかりました。つまり、Activate と Bind です。これら 2 つの違いは何ですか?
サービスの開始時に特定のアクションを実行したい場合、それを Bind メソッドまたは Activate メソッドのどちらに配置しますか?
OSGI を eclipse で使い始めました。Declarative Services の下で、サービスがアクティブ化されると実行されるメソッドが 2 つあることがわかりました。つまり、Activate と Bind です。これら 2 つの違いは何ですか?
サービスの開始時に特定のアクションを実行したい場合、それを Bind メソッドまたは Activate メソッドのどちらに配置しますか?
バインド メソッドは、サービス参照をコンポーネント インスタンス (つまり、コンポーネントが依存するサービス) に挿入するために使用されます。activate メソッド (宣言されている場合) は、コンポーネントが満たされたときに、アクティブ化プロセスの最後のステップで呼び出されます。
したがって、すべての必須の依存関係がその時点で解決されていることがわかっているので、activate メソッドでアクションをコーディングする必要があると思います。
また、宣言型サービス コンポーネント自体はサービスではありませんが、サービスを提供する場合があることに注意してください。
コンポーネントがアクティブ化されると、このactivate
メソッドが呼び出されます。したがって、これは初期化アクティビティを実行するのに適した時期です。bind
メソッドは、コンポーネントが参照するサービスごとに 1 回呼び出されます。したがって、コンポーネントに への参照がある場合、コンポーネントにバインドされた各オブジェクトで のメソッドが呼び出されLogService
ます。その後、メソッドは をフィールドに格納できます。bind
LogService
LogService
LogService