2

次のコンポーネントを含むOSGiモジュラーシステムがあります。

  • 特定のサーバーへの特定のプロトコルを介した接続を表す特定のプロトコル インスタンスの実装 (接続サービスごとにインスタンス化)
  • いくつかの特定のプロトコル インスタンス マネージャー サービス、オンデマンドでインスタンスを作成および事前構成する (通常、異なるバンドルからの複数のシングルトーン サービス)
  • プロトコル マネージャー サービスを集約し、必要に応じてプロトコル インスタンスを提供するよう要求する接続マネージャー (単一シングルトーン サービス)

これらは、次のように OSGi バンドルにパッケージ化されています。

`-ConnectionManager
      `-ConnectionManager.class
`-IrcProtocol
      `-IrcProtocolManagerService.class
      `-IrcProtocolInstance.class
`-XMPPProtocol
      `-XMPPProtocolManagerService.class
      `-XMPPProtocolInstance.class

ConnectionManagerは注釈が付けられています

@Provides
@Instantiate
@Component

またSubscriber、インターフェイスを実装し、ある種の typed を介して配信されたメッセージを送信およびリッスンする機能を有効にしますEvent Admin


それぞれ*ProtocolManagerに注釈が付けられています

@Provides
@Instantiate
@Component

また、サービス リスナーProtocolManagerによる検出を可能にするインターフェイスを実装します。ConnectionManager


それぞれ*ProtocolInstanceに注釈が付けられています

@Provides
@Component

そしてSubscriberインターフェースを実装します。また、やProtocolInstanceなどの一般的な接続操作を提供するインターフェイスも実装しています。connect()disconnect()


ここでの問題は、ProtocolInstances が、アノテーション トリガーではなく、new演算子を使用して手動で作成されることです。そのため、アノテーションであるにもかかわらず、iPOJO サービスの公開に参加しません。ProtocolManager@Instantiate@Provides


ProtocolListener質問: このプログラムで作成されたサービスを、生の OSGi サービスの公開に手動で取り込まずに (少なくともある種のファクトリーの外部で) 正しく (できればアノテーションを使用して宣言的に) 公開するにはどうすればよいでしょうか? または、おそらく、システムを再構築して、暗黙の iPOJO ガイドラインとうまく連携させるにはどうすればよいでしょうか?

4

1 に答える 1