問題タブ [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.
osgi - 依存関係マネージャーの OSGi インジェクション
コンポーネントに を挿入しようとしDependencyManager
ています。BundleContext
は注入されますが、 は注入されませDependencyManager
ん ( @Inject
)。私は何を間違っていますか?
java - OSGi AspectService はアスペクト サービスのサービス プロパティを取得します
Sender
プロパティを持つサービスとアスペクト service が与えられた場合、現在のサービス プロパティを取得するにはLogSender
どうすればよいでしょうか? 特定の が送信しているデータをオプションでログに記録するプロパティを追加したいと思います。LogSender
Sender
Sender
component.getServiceProperties();
LogSender
のプロパティではなく、のサービス プロパティを返すようSender
です。
私は見てきましたが、そのアスペクトを使用されている特定の構成ConfigAdmin
に関連付ける方法がわかりません。Sender
LogSender
関連する場合は、OSGi コンテナーとして Apache Felix を使用しています。
依存関係リストに追加した後のActivator
'sinit
メソッドを次に示します。ConfigurationAdmin
java - OSGI サービスの可視性/DS アノテーション コンポーネント インジェクション
ファクトリ メソッドを使用して実装を返す必要があるため、Apache Felix Dependency Manager によってインスタンス化されたサービスがあります。
このサービスを同じバンドル内のサービスに挿入したいので、aService と bService の両方を同じバンドルに含める必要があります。
これは完全に正常に機能しています。問題は、プライベート サービスのように aService をバンドルの外に表示したくないということです。私が削除した場合:
とにかく作成されたように見えるコンポーネントは作成されておらず、サービスとして登録されていないため、他のバンドルでは使用できませんが、DS アノテーションを使用してコンポーネントを挿入することはできません。サービスを元のバンドル内でのみ表示することは本当に不可能ですか? または、DS アノテーションを使用してコンポーネントを挿入する方法はありますか?
コンポーネントを注入するために Apache Felix Dependency Manager を使用してみました。
しかし、コンポーネントが注入されていないことがわかりました:
これは、単純なコンポーネントを @ServiceDependency で注入できないことを意味しますか?それらはサービスであり、OSGI レジストリにある必要があるためですか? では、アノテーションを使用して単純なコンポーネントを挿入するにはどうすればよいでしょうか? あるはずですよね?
アップデート
aService の実装ではパッケージをエクスポートする必要があることに気付きました。したがって、これは単なる設計上の欠陥でした。次に、サービスを 2 つの異なるバンドル (OSGI の方法) に分離する方法を見つけ、問題を解決しました。
それを行う前に、エクスポートされたバンドルからパッケージを削除しようとしましたが、それでも機能しませんでした.サービスは引き続き利用可能でした.