OSGi のバックエンド システムのさまざまなバンドルを通過するパケットのデータ フローを確認する必要があります。
パケットは「ゲートウェイ バンドル」を介して着信し、処理中のいくつかの異なるバンドルを通過します。私がすべきことは、これらの異なるバンドルを通るデータ フローを「監視」する別のバンドルを作成することです。他のバンドルが実際にそこにあることを知らずに。
どうすればこれにアプローチできますか?
データ フローが他のバンドルによって登録された OSGi サービスを経由する場合、すべてのサービスに対してjava.lang.reflect.Proxyオブジェクトを作成し、これらのオブジェクトを最大のSERVICE_RANKINGを持つ OSGi サービスとして (元のオブジェクトと同じ OBJECTCLASS およびプロパティで) 登録できます。この場合、すべての通話は最初にサービスに送られ、次に元のサービスに転送できます。
パブリック API 境界で呼び出しをインターセプトする必要がありますか?
1 つのアプローチは、インターセプター パターンです。Java でこれを行う典型的な方法は、AOP を使用することです。
すでにSpringを使用していますか? もしそうなら、それはあなたが調査できるさまざまなフレーバーの AOP を持っています。
コードが直接メソッド呼び出しを行っていると思いますか? もしそうなら、キューを使用するという 123x の提案は、コードの大規模なリファクタリングを必要とするため、短期的な解決策としてはおそらく適切ではありません。