問題タブ [apache-felix]
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.
dependency-injection - OSGi/Felix Declarative Services: バインドするサービスをフィルタリングする方法は?
Apache Felix とその Declarative Services (SCR) を使用して、バンドル間のサービス依存関係を結び付けています。
たとえば、java.util.Dictionary にアクセスする必要がある場合は、次のように言って SCR に提供させることができます。
現在、複数の辞書サービスが利用可能であり、「name」サービス プロパティを使用してそれらをフィルター処理したいと考えています (「name=myDictionary」のみが必要です)。これはコードで (ServiceTracker を使用して) 行うことができますが、代わりに @scr アノテーションでフィルターを指定したいと思います。
java - OSGiバンドルからコマンドライン引数にアクセスする
OSGiバンドルのコレクションとして実行されるアプリケーションがあります。Felixフレームワークを埋め込んだ非常に小さなラッパーを使用して開始します。そのラッパーの必要性は、Felixに依存しているという事実(たとえば、Equinoxでも同様にアプリケーション自体を実行できる)と同様に、私を少し苛立たせます。したがって、それを取り除き、デフォルトのFelixを使用したいと思います。ランチャー。
ラッパーが実際に行うのは、起動されたOSGiフレームワークにコマンドライン引数を渡すことだけです。これにより、そこでバンドルがそれらに反応できるようになります。実際には引数を解析せず、String[]をアプリケーションにプッシュするだけであることに注意してください。
カスタムランチャーを廃止できるように、バンドルからコマンドラインパラメーターにアクセスするための標準的な方法(または少なくともFelix標準の方法)はありますか?
java - Felix/OSGi: OSGi サービスではない SCR コンポーネントを使用するには?
Apache Felix の SCR を使用すると、インスタンス化され、依存関係に接続され、OSGi サービスとして登録されるコンポーネントを (注釈または XML を介して) 宣言できます。
サービス登録の部分をスキップして、SCR にコンポーネントを作成させることもできます ( @scr.component を指定し、 @ scr.serviceを省略します)。これは (バンドル内の) 依存性注入だけに役立つかもしれないと考えていましたが、コンポーネントをどのように消費するのでしょうか? サービスはscr.referenceを使用して注入できますが、これは非サービスでは機能しません (または機能します)?
SCR API に直接アクセスすることはできますが、コンテナー サービスと直接対話することは、DI の目的を無効にします。
osgi - OSGir4.1のServiceTracker
org.osgi.util.tracker.ServiceTracker
(PrintableServiceTrackerはServiceTrackerCustomizerを実装し、新しいサービスが追加されたときに単に印刷します)を使用しています。
新しい電子書籍「 OSGiの動作」で「疑似登録」について読んだのですが、疑似登録を明示的に行う必要があるのでしょうか、それともフレームワークがこれを自動的に処理するのでしょうか。
(すでにインストールされている印刷可能なサービスはServiceTrackerによってキャッチされます。ServiceTracker.addingService(ServiceReference)は、事前にインストールされている印刷可能なサービスごとに呼び出されます)
java - Apache Felix: 拡張バンドルとは何ですか?
Apache Felix には「拡張バンドル」という概念があります。これはシステムバンドルに貢献するバンドルのようです。それらのために登録されている特別な URL "felix://extensions/" もあります。
通常のバンドルではなく、拡張機能を使用する必要があるのはいつですか?
このアプローチを使用するバンドルの例はありますか?
これは Felix 専用の機能ですか、それとも OSGi 仕様の一部ですか?
java - OSGi felix:ホストアプリケーションとバンドルの間でクラスを共有することは可能ですか?
ホストアプリケーション内で、setおよびgetメソッドを提供することにより、Vehicleという名前のクラスのインスタンスをOSGiワールドに転送するために使用される単純なpushServiceを実装しようとしました。サービスを使用できるようにするために、サービスインターフェイスとVehicleクラスの両方をjarファイルにエクスポートし、そのファイルをバンドル内にインポートしました。このファイルはサービスを使用する必要があります。
felixフレームワークとバンドルをインスタンス化するホストアプリケーション内でVehicleクラスを使用しようとするたびに、リンケージエラーが発生しました。次のブログエントリ(http://frankkieviet.blogspot.com/2009/03/javalanglinkageerror-loader-constraint.html)を読んだ後、このエラーが発生する理由を理解しました。しかし、私には自分の問題を解決する方法がわかりません。
ホストアプリケーションとOSGiインスタンスの間でクラスを共有することは可能ですか?jarファイルをインポートする代わりにリフレクションを使用する必要があるかもしれませんか?私はそのライブラリ(http://code.google.com/p/transloader/)を調べましたが、このライブラリが私の問題を解決できるかどうかはよくわかりません...
BR、
マーカス
repository - Felix OBR リポジトリ リストを設定するには?
config.properties
Felix のファイルで多数の OBR リポジトリを指定する方法はありますか? 実行時にリポジトリを追加できますが、再起動後に行う必要があります。
「環境設定サービス」は役に立たず、「バンドルリポジトリ」はそれを使用していないようです。
java - カスタムマニフェストファイルを使用してEclipseでJARを構築するにはどうすればよいですか?
Eclipse で Felix バンドルを構築しようとしています。これには基本的に、Eclipse で JAR を (エクスポートによって) 作成し、カスタム マニフェスト ファイルを追加することが含まれますが、これを機能させることができないようです。JAR ファイルをエクスポートしようとすると、カスタム マニフェスト ファイルが JAR に表示されますが、JAR 内の正しい場所 (meta-inf) に追加されません。これにより、Eclipse によって作成される別のデフォルトのマニフェスト ファイルが JAR ファイルに追加されます。
注:私は Eclipse の組み込み JAR エクスポート ツールを使用しており、ワークスペースから既存のマニフェスト ファイルを使用するオプションを選択しています。
見落としている細かい部分があると思いますが、少し困惑しています。
ご協力いただきありがとうございます。
java - osgi + felix を使い始める
開始するには、 Felixのどのパッケージが必要ですか? ダウンロードページには無数のそれらがあります。
(ps は、OSGI の "Oscar" 参照フレームワークとは対照的に、Odd Couple + への参照の名前ですか? これは、チュートリアル ページの 1 つを読んだ後に思い浮かびました。