問題タブ [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.

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

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 インスタンスに同じセンサー バンドルをインストールしないようにするにはどうすればよいですか?

0 投票する
3 に答える
415 参照

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 " 呼び出しは機能するはずですが、機能しません。これをデバッグする方法もわかりません。(リモートのものなしで、ローカルで、同じコンテナ内で、メソッド呼び出しが機能しています)

どんな助けでもうまくいく可能性があります!ありがとう!

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

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アノテーションは無視されるようです. バンドルのバージョンも間違っているのかもしれません。

誰かがこの問題についてもっと知っていて、どうすればこれを解決できますか? さらに情報が必要な場合はお知らせください。

よろしくラース

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

osgi - バンドルは両方の Karaf インスタンスにインストールされます

2 つのKarafインスタンス間で「通信」を行いたいので、そのためにKaraf Cellarを使用することにしました。

現在、2 つのバンドルがあり、それぞれが Karaf コンテナーにインストールされています。それらは、hazelcast.xml で提供されるアドレスとポートによって識別されます。

私の問題は、Karaf (A) にインストールされ、Karaf (B) にインストールされたバンドルがある両方の Karaf コンテナーを再起動するときです。

これで、両方のKaraf コンテナーに同じバンドルがインストールされました。

とにかくこの動作を止める方法はありますか?

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

dosgi - Karaf 上の Apache CXF DSOGI + @Context UriInfo

Karaf 4.0.8 で Apache CXF DOSGI を使用して RESTful Web サービスを作成しようとしています。実装に追加しようとし@Contextています。どうやってするの?

UriInfo正しく注入されていません。

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

osgi - karaf、cxf、および dosgi での休止状態による Bean 検証

cxf dosgi を使用して、Karaf で jax-rs サービスを公開しています。休止状態プロバイダーで Bean 検証を追加しようとしています。

  1. hibernate-validator 機能をインストールしました
  2. cxf-bean-validation および cxf-bean-validation-core 機能をインストールしましたが、両方が必要かどうかはわかりません。
  3. 休止状態プロバイダーを有効にするために、次のインテントを追加しました。

    }

しかし、私は一番下に例外があります。不足しているクラスを含むバンドル (ラップ) を追加しました。

これでも問題は解決しません。

私はkaraf 4.0.8を使用しています

アイデアがあれば共有してください!ありがとう!!

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

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 番目のバンドルがエラーなしでアクティブになります。あなたが持っているかもしれない洞察をいただければ幸いです。