問題タブ [declarative-services]
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.
eclipse - OSGI Declarative Services を開始するとスレッド エラーが発生する
2 つのデータベース接続を必要とする RCP 3.7 アプリケーションがあります。各データベースのコードは個別のバンドルにあります。以前は、データベースの起動は Activator.start() メソッドで行われていました。データベースの起動を 2 つの Declarative Services に移動するために、コードを大幅にリファクタリングしました。これにより、バンドル間での密結合と過剰なパッケージ公開を解消するという目標が達成されました (ほとんどすべてがエクスポートされました)。
私が今抱えている課題は、2 つのサービスが十分に速く開始されず、ワークベンチがロードされ、スレッド違反が発生することです。私は両方のサービスをimmediate = trueに設定しています。バンドルの開始順序は、-1 (デフォルト) で eclipse.osgi、2 で equinox.ds および equinox.common、デフォルトで core.runtime です。バンドルに開始レベルを追加しようとしましたが、役に立たなかったので削除しました。
サービスが戻る前にデータベースを確実に開始する方法について、何か考えや提案はありますか?
eclipse - Eclipse で構成管理を実行できませんでした
Configuration Admin を使用して構成情報をバンドルに渡そうとしています。OSGI の Equinox 実装に基づく宣言型サービスを使用しています。まず第一に、Config Admin の Equinox 実装が見つからなかったので、felix 実装をインストールしたので、どこで Equinox バージョンを入手できるかについて誰かが提案してくれれば幸いです。
私の主な質問は、プログラムを実行するたびに次のエラーが発生し続けることです。null の「構成」オブジェクトが更新メソッドに渡されているようです。
構成オブジェクトを作成する構成バンドルを作成しました。そのアクティブ化メソッド (宣言型サービスによって呼び出される) の主なコンテンツは次のとおりです。
また、managedServices を実装するバンドル内の更新されたメソッドは次のとおりです。
奇妙なことに、バンドルの更新を停止して開始すると、構成オブジェクトをまだ作成していないかのように、常に「構成が null に等しい」と表示されます。ここで何が欠けていますか?? 構成管理者の実行に関する問題を解決するためにほぼ 2 週間を費やしましたが、時間がかかりすぎています。これについての情報をいただければ幸いです。txs!!
編集:ここでは、ManagedService を登録するクラスの「アクティブ化」メソッドを追加しました。
osgi - 特定のバンドル バージョンから DS コンポーネントの工場設定を作成する方法は?
servicefactory アノテーション プロパティと ConfigurationPolicy.REQUIRE を持つ DS ベースのコンポーネントがあります。私は ConfigAdmin を使用して、そのようなサービスのインスタンスを作成しています。
サービスのインスタンスを作成するために、エクステンダー バンドルで CM サービスの次のメソッドを使用しています。
そのコンポーネントを含む複数のバージョンのバンドルが同時にインストールされているとします。特定のバージョンの構成を作成するにはどうすればよいですか?
ロケーター パラメーターの存在は知っていますが、使用する値がわからないという理由だけで null に設定していました。これらの DS コンポーネントのそれぞれが期待する値を知るにはどうすればよいでしょうか?
declarative-services - OSGI Declarative Service は何も出力しません
親愛なる才能のあるプログラマー!私は OSGI フレームワークを使用しており、プログラムに Declarative Service を適用しようとしていましたが、画面に何も出力されませんでした。私のプログラムはシンプルで、インターフェースが 1 つしかなく、1 つのクラスがそれを実装し、1 つのクラスがインターフェースをクライアントとして消費します。
- インターフェイスは次のとおりです。
- クラスは Service として Interface を実装します:
サービスを登録する XML は次のとおりです。
サービスのマニフェスト ファイルは次のとおりです。
- そして今、これはサービスをクライアントとして消費し、結果を出力するクラスです (このクラスは、上記のインターフェースと実装クラスを格納した以前のプラグイン プロジェクトとは異なり、他のプラグイン プロジェクトにありました。 ):
- これは、消費者クラスのサービスを消費してバインドする XML ファイルです。
- これはマニフェスト ファイルです。
- 画面上の結果は次のとおりです。
(何も起こらなかった)
- しかし、jUnit テストを使用して DateConsumer クラスの activate() メソッドをテストすると、うまくいきました。しかし、OSGI フレームワークでプラグイン プロジェクトを実行しようとしても、何も起こりませんでした。
この問題を知っている誰かが私を助けてくれることを願っています。よろしくお願いします!
java - OSGI Declarative Service スコープを構成する方法は?
OSGI DSをシングルトンに設定する方法を誰か説明してもらえますか? OSGi コンテナとして Equinox を使用しています。
SCR コンポーネント
OSGI コンソール出力
osgi> services (objectClass=foo.bar.services*)
{foo.bar.services.Dictionary}={
component.name=簡易辞書、
component.id=0、
service.id=51、
service.bundleid=7、
service .scope=bundle
}
"バンドルによって登録されました:" foo.bar.services_1.0.0.qualifier [7]
"サービスを使用するバンドルはありません。"
osgi - Equinox のリモート宣言型サービス
Eclipse ECF を使用してリモート宣言型サービスを提供しようとしています。サービス プロバイダー コンポーネントの定義で、次のプロパティを設定しました。
ただし、これらのプロパティを使用して消費者側からサービスを検出する方法がわかりません。
(ある osgi 環境からサービスを提供し、別の osgi からそれを発見できるようにしたい。)
spring - Spring Bean に宣言型サービスを挿入するにはどうすればよいですか
宣言型サービスを公開しているサードパーティのライブラリがあります。しかし、私は春の豆のクラスを持っています。
この宣言型サービスをSpring Beanクラスに挿入するにはどうすればよいですか?