問題タブ [felix-dependency-manager]

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.

0 投票する
1 に答える
171 参照

osgi - 依存関係マネージャーの OSGi インジェクション

コンポーネントに を挿入しようとしDependencyManagerています。BundleContextは注入されますが、 は注入されませDependencyManagerん ( @Inject)。私は何を間違っていますか?

0 投票する
1 に答える
124 参照

java - OSGi AspectService はアスペクト サービスのサービス プロパティを取得します

Senderプロパティを持つサービスとアスペクト service が与えられた場合、現在のサービス プロパティを取得するにはLogSenderどうすればよいでしょうか? 特定の が送信しているデータをオプションでログに記録するプロパティを追加したいと思います。LogSenderSenderSender

component.getServiceProperties();LogSenderのプロパティではなく、のサービス プロパティを返すようSenderです。

私は見てきましたが、そのアスペクトを使用されている特定の構成ConfigAdminに関連付ける方法がわかりません。SenderLogSender

関連する場合は、OSGi コンテナーとして Apache Felix を使用しています。

依存関係リストに追加した後のActivator'sinitメソッドを次に示します。ConfigurationAdmin

0 投票する
2 に答える
124 参照

java - OSGI サービスの可視性/DS アノテーション コンポーネント インジェクション

ファクトリ メソッドを使用して実装を返す必要があるため、Apache Felix Dependency Manager によってインスタンス化されたサービスがあります。

このサービスを同じバンドル内のサービスに挿入したいので、aService と bService の両方を同じバンドルに含める必要があります

これは完全に正常に機能しています。問題は、プライベート サービスのように aService をバンドルの外に表示したくないということです。私が削除した場合:

とにかく作成されたように見えるコンポーネントは作成されておらず、サービスとして登録されていないため、他のバンドルでは使用できませんが、DS アノテーションを使用してコンポーネントを挿入することはできません。サービスを元のバンドル内でのみ表示することは本当に不可能ですか? または、DS アノテーションを使用してコンポーネントを挿入する方法はありますか?

コンポーネントを注入するために Apache Felix Dependency Manager を使用してみました。

しかし、コンポーネントが注入されていないことがわかりました:

これは、単純なコンポーネントを @ServiceDependency で注入できないことを意味しますか?それらはサービスであり、OSGI レジストリにある必要があるためですか? では、アノテーションを使用して単純なコンポーネントを挿入するにはどうすればよいでしょうか? あるはずですよね?

アップデート

aService の実装ではパッケージをエクスポートする必要があることに気付きました。したがって、これは単なる設計上の欠陥でした。次に、サービスを 2 つの異なるバンドル (OSGI の方法) に分離する方法を見つけ、問題を解決しました。

それを行う前に、エクスポートされたバンドルからパッケージを削除しようとしましたが、それでも機能しませんでした.サービスは引き続き利用可能でした.