FindHook
今日、私は OSGi フック、特にサービスとサービスのために少し作業しましたEventListenerHook
。プロキシサービスを試してみたかった。正常に動作し、私のEventListenerHook
サービスはプロキシされています。しかし、関連するメソッドに(Bnd スタイル)FindHook
のアノテーションを付けて、サービスがサービス実装の参照を取得すると、イベントが呼び出されないことに気付きました。アノテーションの問題ではなく、DS 全般の問題かもしれません。setXXX
@Reference
これは非常に悪いことです。bc には、プロキシなしとプロキシ付きの 2 つのサービスが登録されています。プロキシされたものからのみ参照を取得したい。一般に、DS を使用しない場合、呼び出すことで参照を取得できBundleContext.getServiceReference(java.lang.Class<S> clazz)
、イベントFindHook.find
が呼び出されます。ここで、どちらServiceReference
を返すかを決定できます。
DS のようなアプローチを使用すると、どのようなプロセスが実行されますか (私にとっては Bnd アノテーション@Reference
)。上記のセクションで説明したように、どのサービスを参照するかを決定したいと考えています。