問題タブ [ipojo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
osgi - felix が埋め込まれている場合にコンシューマーのインスタンスを解決する方法
Felixを埋め込むアプリケーションがあります。今、私は iPOJO を活用しようとしています。この目的のために、次の宣言を持つ消費者を作成しました。
すべてが ant task によってコンパイルされます<ipojo ...
。
iPOJO のすべての例は、私のアプリケーションが felix コンソールで開始されていることを前提としています。しかし (もう一度) 私のアプリケーションには felix が埋め込まれています。だから私の質問のインスタンスを解決する方法はYetAnotherConsumer
?
EDITED iPOJOのドキュメントごとに@Neilの質問に答える:
@インスタンス化
目標: 単純なインスタンスを宣言します (これは <instance component="..."> </instance> と同等です)
iPOJO と Felix の組み合わせで私のインスタンスが作成されると思いますYetAnotherConsumer
。私の質問は、アプリケーションがこのインスタンスにアクセスする方法です。
EDITED 2ロギングをコンストラクターに配置したYetAnotherConsumer
ので、これが呼び出されていないことがわかります。これにより、別の質問が発生します-iPOJOを開始する方法、私のfelixは次のように開始されます:
iPOJOエンジンを起動するために何が欠けていますか?
java - Blueprint の代わりに Apache Aries Managed JPA を iPOJO で使用できますか?
はいの場合、誰かに例がありますか?
osgi - iPOJOとサービスダンピング
iPOJOの比較表は、Blueprintと同様に、サービスダンピングをサポートしていると述べています。これは、一時的な依存関係または他のサービスの依存関係も参照していますか?
osgi - iPOJO を使用してサービスを複数のコンシューマーにバインドすることは可能ですか?
私の iPOJO アプリケーションでは、サービスを 2 つのコンシューマーにバインドしようとしています。
消費者:
サービス:
consumerA、consumerB、および serviceA を開始すると、サービスは consumerA にのみバインドされます。consumerB と serviceA を開始すると、サービスは consumerB にバインドされます。
サービスを両方のコンシューマにバインドさせることは可能ですか? それに対する注釈はありますか?
ありがとう。
osgi - iPOJO @Bind/@Unbind メソッドで許可される署名
私が見たすべての iPOJO の例では、@Bind
および@Unbind
コールバックは引数としてサービス インスタンスのみを取ります。
ブループリントでは、
iPOJO コールバックは、サービス プロパティまたは へのアクセスも取得できますかServiceReference
? または、代わりにホワイトボードハンドラーを使用する必要がありますか?
osgi - OSGi コンポーネント モデルにおけるバンドル内およびバンドル間の相互依存関係
私の現在のアプリケーションでは、いくつかの場所でこのパターンに遭遇しました。異なるが関連するジョブを実行する 1 つのバンドルに 2 つのサービス インターフェイスがあります。
両方を実装するシングルトンコンポーネントが必要ですが、それぞれが他方への参照を必要としていることがわかります。
3 つの OSGi コンポーネント モデル (DS、Blueprint、iPOJO) のどれがこれを可能にしますか? 1)Service1Impl
とService2Impl
が同じバンドルにある場合。2)それらが異なるバンドルにあるときは?
osgi - Felix は OSGI バンドルをアクティブとしてリストしますが、Gogo シェル コマンドにアクセスできません (依存関係に関連)
この基本的なコードは、コマンド scopeA:test をシェルでアクセスできるようにすることに成功しています。
ただし、別の OSGI コンポーネントに依存するコンストラクターを追加すると、コマンドにアクセスできなくなり、「ヘルプ」にリストされなくなります。それでも、バンドルはまだアクティブな状態にロードされている可能性があります。
B の内容は次のとおりです。
コマンドがリストされなくなった理由はありますか? これをより適切にデバッグできるように、状態に関する詳細情報を見つけるためのヒントはありますか?
java - @Instantiate 以外の OSGi サービスを iPOJO で公開する
次のコンポーネントを含むOSGiモジュラーシステムがあります。
- 特定のサーバーへの特定のプロトコルを介した接続を表す特定のプロトコル インスタンスの実装 (接続サービスごとにインスタンス化)
- いくつかの特定のプロトコル インスタンス マネージャー サービス、オンデマンドでインスタンスを作成および事前構成する (通常、異なるバンドルからの複数のシングルトーン サービス)
- プロトコル マネージャー サービスを集約し、必要に応じてプロトコル インスタンスを提供するよう要求する接続マネージャー (単一シングルトーン サービス)
これらは、次のように OSGi バンドルにパッケージ化されています。
にConnectionManager
は注釈が付けられています
またSubscriber
、インターフェイスを実装し、ある種の typed を介して配信されたメッセージを送信およびリッスンする機能を有効にしますEvent Admin
。
それぞれ*ProtocolManager
に注釈が付けられています
また、サービス リスナーProtocolManager
による検出を可能にするインターフェイスを実装します。ConnectionManager
それぞれ*ProtocolInstance
に注釈が付けられています
そしてSubscriber
インターフェースを実装します。また、やProtocolInstance
などの一般的な接続操作を提供するインターフェイスも実装しています。connect()
disconnect()
ここでの問題は、ProtocolInstance
s が、アノテーション トリガーではなく、new
演算子を使用して手動で作成されることです。そのため、アノテーションであるにもかかわらず、iPOJO サービスの公開に参加しません。ProtocolManager
@Instantiate
@Provides
ProtocolListener
質問: このプログラムで作成されたサービスを、生の OSGi サービスの公開に手動で取り込まずに (少なくともある種のファクトリーの外部で) 正しく (できればアノテーションを使用して宣言的に) 公開するにはどうすればよいでしょうか? または、おそらく、システムを再構築して、暗黙の iPOJO ガイドラインとうまく連携させるにはどうすればよいでしょうか?
apache-felix - Pax Exam テストでの ipojo Maven バンドルのロード
Pax Exam を使用してテストを作成しようとしています。テスト用にロードしているバンドルの一部は、パッケージ「 org.apache.felix.ipojo 」に依存しています。
Pax Exam 構成でこのバンドルをロードする行を省略した場合、たとえば、次のようになります。
次に、このパッケージに依存関係がないことを示すエラーが表示されます。
ただし、それを含む行を追加すると:
ClassCastException を示すメッセージが表示されます。これは、Felix に組み込まれている ipojo バンドルが原因であると推測されます。
ランナーとして Felix と JUint4TestRunner を使用しています。
競合せずにこの依存関係にアクセスするにはどうすればよいですか?