問題タブ [dosgi]
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 - Karaf での分散 OSGI - コンシューマー サービスが起動しない
Zookeeper を使用して、Karaff で DOSGi を始めたばかりです。Karaf のインスタンスでサービスを提供し、別のインスタンスで消費者を提供しています。サービス側はうまく機能します。公開すると、Zookeeper サーバーがインストールされている Karaf コンソールで log:display コマンドを使用して表示でき、ブラウザーからも wsdl にアクセスできます。問題は消費者側にあります。サービスが稼働しているときにメッセージ (以下の参照コード) を書き込む必要がありますが、決して起こりません。消費者コード:
そして、component.xml:
マニフェスト:
コンシューマー バンドル (バンドルの開始) を強制しようとしましたが、次のエラーが表示されます。
バンドル 137 の開始エラー: OSGI_Bundle-Consumer [137](R 137.1) を解決できません: 要件がありません [OSGI_Bundle-Consumer [137](R 137.1)] osgi.wiring.package; (osgi.wiring.package=org.osgi.proyecto.dev.sensor) 未解決の要件: [[OSGI_Bundle-Consumer [137](R 137.1)] osgi.wiring.package; (osgi.wiring.package=org.osgi.proyecto.dev.sensor)]
依存エラーがあるようです。これは、コンシューマー インスタンスにセンサー バンドル (Installed 状態) をインストールすることで解決されます。両方の Karaf インスタンスに同じセンサー バンドルをインストールしないようにするにはどうすればよいですか?
java - 分散 OSGi - サービスの利用
リモートでアクセスできるサービスを作成する必要があります。cxf-dosgi-ri-singlebundle-distribution-1.4.0 を使用しています。そこで、次のプロパティを使用して API を作成し、次に実装を作成しました。
バンドルを展開すると (API と d-osgi jar を展開した後)、リモート コンピューターからでもブラウザーで WSDL を確認できます。「http://192.168.0.3:9090/preview?wsdl」のように。
しかし、次に来るのは消費者です。クライアント jar に OSGI-INF/remote-service/remote-services.xml があります。
(d-osgi バンドルと API をデプロイした後) バンドルをデプロイできますが、常に null 参照が返されます。チュートリアルは常にこのようなコードを使用しています
しかし、私はこれを使用できないLiferay 7を使用しています(ServiceTrackerのコンストラクターはありません-レジストリインスタンスからServiceTrackerインスタンスを取得することしかできません)
OSGi コンテナーは Felix です。
上記のように WSDL の説明にアクセスでき、API にメソッド hello() があり、" http://192.168.0.3:9090/preview/hello " 呼び出しは機能するはずですが、機能しません。これをデバッグする方法もわかりません。(リモートのものなしで、ローカルで、同じコンテナ内で、メソッド呼び出しが機能しています)
どんな助けでもうまくいく可能性があります!ありがとう!
web-services - dosgi: リソース クラスのリソース メソッドが見つかりません - javax.ws.rs アノテーションは無視されますか?
以下に示す例外で実行します。dosgi で注釈を使用して Web サービスを公開しようとしました。しかし、注釈は無視されるようです。
restProps.put("service.exported.configs", "org.apache.cxf. ws ");を使用する場合
javax.ws.rs 注釈のない私の Activator.Java クラスでは、正常に動作し、wsdl (localhost:9090/provalet?wsdl) を要求できます。
ここにいくつかの関連スレッドがありますが、これらの回答はどれも役に立ちませんでした:
TomEE+ で JAX-RS を使用する場合の「リソース メソッドなし」 -> 「パブリック」スコープと見なされる
CXF DOSGi は注釈を無視してい ます http://cxf.547215.n5.nabble.com/CXF-DOSGi-is-ignoring-JAX-RS-annotations-td4495048.html -> 「org.apache.servicemix. specs.jsr311-api-1.1"
私もこの例を開発しましたhttp://maksim.sorokin.dk/it/2011/09/18/maven-apache-felix-cxf-dosgi-an-example-of-dosgi-service/ -> しかし同じ例外
私は〜と働く
- リスト項目
- Apache フェリックス 5.4.0
- 分散 OSGi 配布ソフトウェアの単一バンドル配布 (1.2.0)
- ジャワ1.8
私のバンドルは次のとおりです。
Activator.java (私のバンドル provalet (1.0.0.SNAPSHOT) の OSGi Activator):
ProvaletService.java:
OSGI-INF/remote-service/remote-service.xml:
これは、バンドルの生成を担当する pom.xml の一部です。
例外は次のとおりです。
仮定:依存関係の問題だと思います.javax.ws.rsアノテーションは無視されるようです. バンドルのバージョンも間違っているのかもしれません。
誰かがこの問題についてもっと知っていて、どうすればこれを解決できますか? さらに情報が必要な場合はお知らせください。
よろしくラース
osgi - バンドルは両方の Karaf インスタンスにインストールされます
2 つのKarafインスタンス間で「通信」を行いたいので、そのためにKaraf Cellarを使用することにしました。
現在、2 つのバンドルがあり、それぞれが Karaf コンテナーにインストールされています。それらは、hazelcast.xml で提供されるアドレスとポートによって識別されます。
私の問題は、Karaf (A) にインストールされ、Karaf (B) にインストールされたバンドルがある両方の Karaf コンテナーを再起動するときです。
これで、両方のKaraf コンテナーに同じバンドルがインストールされました。
とにかくこの動作を止める方法はありますか?
dosgi - Karaf 上の Apache CXF DSOGI + @Context UriInfo
Karaf 4.0.8 で Apache CXF DOSGI を使用して RESTful Web サービスを作成しようとしています。実装に追加しようとし@Context
ています。どうやってするの?
UriInfo
正しく注入されていません。
osgi - karaf、cxf、および dosgi での休止状態による Bean 検証
cxf dosgi を使用して、Karaf で jax-rs サービスを公開しています。休止状態プロバイダーで Bean 検証を追加しようとしています。
- hibernate-validator 機能をインストールしました
- cxf-bean-validation および cxf-bean-validation-core 機能をインストールしましたが、両方が必要かどうかはわかりません。
休止状態プロバイダーを有効にするために、次のインテントを追加しました。
}
しかし、私は一番下に例外があります。不足しているクラスを含むバンドル (ラップ) を追加しました。
これでも問題は解決しません。
私はkaraf 4.0.8を使用しています
アイデアがあれば共有してください!ありがとう!!
osgi - Apache Karaf Cellar を使用した分散 OSGi の例 - 分散サービスが見つからないため、クライアント バンドルをアクティブ化できません
私は Apache Karaf 4.1.1 と Karaf Cellar を使用しています。私は2つのバンドルを書きました。最初のバンドルは、タイプ ITrackerManager のサービスを提供します。2 番目のバンドルには、ITrackerManager を参照するコンポーネントがあります。私の最終的な目標は、2 番目のバンドルのコンポーネントが、別のノードで実行されている最初のバンドルの ITrackerManager サービスへの参照を正常に取得することを確認することです。これはすべて、分散 OSGi に関する私の探求の一部です。
その 2 番目のバンドルをインストールしたときに実際に起こっていることは、インストールされたものの、サービス参照がないためにアクティブ化に失敗したことです。テストを間違って実施しているに違いありません。最終目標をどのように実証するかについてのアイデア。ノード B のバンドルのコンポーネントは、ノード A のサービスを正常に使用しますか?
これまでにテストを実行した方法は次のとおりです。
ノード A
ノード B
ここまでは順調ですね。コンピューターで 2 つの karaf インスタンスを実行しています。両方のインスタンスがお互いを認識します。ここで、その最初のバンドルをノード A のみにインストールしたいと考えています。これを実現するために、バンドルをクラスターにインストールし、特にノード B から削除します。
ノード A
まだまだ元気そうです。バンドルはクラスター内にあり、ノード A (およびこの時点ではノード B) でローカルにあり、サービスはクラスターによって認識され、ノード A とノード B の両方で使用できます。次に、ノード B からバンドルを削除します。
ノード B
優秀な。最初のバンドルはノード B から削除されていますが、まだクラスター内にあると表示されています。両方のノードは、私のサービスが現在ノード A でのみ利用可能であることに同意しています (バンドルがノード B から削除されたため)。ここで、ノード B のみに 2 番目のバンドルをロードします。ここで問題が発生します。cluster:bundle-install コマンドを使用して 2 番目のバンドルをロードしません。ノード A で終了させたくないためです。代わりに、通常の bundle:install コマンドを使用して 2 番目のバンドルをインストールします。これにより、満たされていない参照に関するエラーが発生します。
ノード B
それで、それはあります。ノード A にのみ存在する必要なサービスを正常に使用できることを期待して、ノード B にのみ 2 番目のバンドルをインストールします。残念ながら、それは起こりません。代わりに、未解決の要件があることを示すエラー メッセージが表示されます。DOSGI が利用できないかのように動作するようです。両方のバンドルを同じノードにインストールすると、2 番目のバンドルがエラーなしでアクティブになります。あなたが持っているかもしれない洞察をいただければ幸いです。