問題タブ [blueprint-osgi]
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.
java - osgi-karaf-service と camel route の複数のバージョン
OSGi の利点の 1 つは、ここで説明されているバージョン管理です。ドキュメントによると、OSGi は「同じ jar」の異なるバージョンをホストし、それに応じて他のアプリケーションがそれらにアクセスできるようにします。
Camel ルートを使用して、OSGi の同じプロパティ ( Apache-Karafコンテナーを使用しています) を活用するタスクが与えられました。
サービスの複数のバージョンをデプロイし、Camelをリクエストに基づいて適切なバージョンにルーティングする必要があります。私はグーグルを広範囲に検索しましたが、適切な例が見つかりませんでした:(
ポインタを投げるか、例を教えてください。
アップデート
serviceとは、このように定義された osgi bundle service を意味します
このチュートリアルで提供されている手順に従って、このサービスの実装クラスであるtransformService
andというサービスを作成しました。TransformServiceImpl
ここで、変更TransformServiceImpl
して新しいバージョンとしてリリースするとします (でバージョンを更新することによりpom.xml
)。また、両方のバージョン、つまり と Karaf (Karaf で問題ありません) を demo.service-0.1.jar
インストールしdemo.service-0.2.jar
ます。この場合、特定のバージョンのサービスにルーティングするにはどうすればよいですか?
osgi:reference
同じサービスを指しているがバージョンが異なる2 つを作成できますか? このようなもの?
そしてそれらをルートで使用しますか?
spring - 複数のコンシューマを持つ Activemq トピック
私は今、この問題に多くの時間を費やしていますが、最終的な解決策を見つけることができないようです. ブロードキャスターとして機能するメッセージ プロデューサーがあり、2 つの異なるトピックにメッセージを投稿します。サイト運営者の投稿プロセスは次のフローに従います。
- ファクトリへの接続を作成して起動します。
- セッションの作成
- セッションと特定のトピック名を使用して Message Producer を作成する
- n* 件のメッセージを送信中
- n 秒待機
- プロデューサー、セッション、接続を閉じています
次に、次の構成を使用して 3 つのコンシューマーをこれらのトピックにサブスクライブさせます (各コンシューマーには独自のclientId
とがありdurableSubscriptionName
ます)。
実際のところ、私の消費者は常にメッセージを受け取っているわけではありません。少なくともすべてではありません。2 つのコンシューマーがすべてのメッセージを取得し、3 番目のコンシューマーがメッセージをまったく取得しない場合もあれば、ランダムなコンシューマーがランダムな数のメッセージを受信する場合もあります。 、消費者は不足しているメッセージを受け取りますが、ブローカーの最初の存続期間中になぜそれが起こらないのか本当に理解できません。誰かがとても親切で、私を助けようとしますか?
ありがとう、ジョージ。
PS : 仮想トピックの使用を考えていましたが、私の主な目的は、他のコンシューマーが将来アタッチできるブロードキャスト プロデューサーを用意することなので、別の仮想ブランチを追加して毎回プロデューサーを変更する必要はありません。メイントピックへ。
java - Apache Camel Blueprint の使用 - コンテナおよびスタンドアロン内のプロパティを永続化する必要がある
構成にブループリントと Camel PropertiesComponent を使用する Camel ルートがあり、「mvn camel:run」を介してスタンドアロンで実行するか、Karaf コンテナーにインストールできます。どちらもうまく機能し、プロパティを発見してルートに挿入します。
私が理解できないのは、実行時にプロパティが変更されたときにプロパティを永続化する方法です(例として、ルートが停止/シャットダウンしたときにマーカーを設定し、ルートの開始時にそれを読み返したい)。
OSGi ConfigAdmin について読んだことがありますが、これは永続的なプロパティをサポートしていないようです。OSGi プリファレンス サービス (永続性をサポートする) についても読みましたが、スタンドアロンまたはコンテナーで実行できるようにするには、これをどのように実装すればよいでしょうか? Camelルートがサービスへの参照を持つ必要があるため、OSGiに依存しますか?
スタンドアロンがコンテナー サービスに依存しないように設定サービスを抽象化する方法はありますか?
前もって感謝します。
java - Eclipse での Maven (OSGI バンドル) プロジェクトのビルド
プロジェクトがコンパイルされて動作していると Eclipse に認識させるのに苦労しています。23 個のモジュール (すべての osgi バンドル) を持つこのプロジェクトを継承し、「mvn install」を実行すると成功しますが、Eclipse ではすべてのモジュールの横に赤い x がまだ表示されています。
私の最終的な目標は、このコードを Eclipse で実行してデバッグできるようにすることです。現在、これを Karaf にデプロイし、起動し、機能をインストールし、完了したらすべて破棄する必要があります。時間がかかるので、これは私を殺しています。
コードに小さな小さな変更を追加するのに 5 分以上かからないように、これを改善する方法について何か提案はありますか?
ありがとう!!
cxf - ブループリント、Apache Camel、cxfrs
blueprint、apache camel、および apache cxf-rs を使用してレスト サービスを開発しようとしています。サービスの実装は camel によって処理されます。
問題は、残りのエンドポイントがラクダに割り当てられないように見えることです。
これは私が得る例外です:
Camel の起動中にエラーが発生しました: CamelContext(blueprintContext) due エンドポイントが既に /crm で実行されています。
私の青写真は次のとおりです。
activemq - OSGI サービスとして activemq Poolable Connection factory にアクセスする
ヒューズ 6.0 と activemq 5.8 を使用しています。各バンドルで activemq のプール可能な接続ファクトリを定義する代わりに、共通のバンドルで定義し、それを osgi サービスとして公開するのが理にかなっています。FUSE_HOME/etc にブルー プリント ファイルを作成し、このような osgi サービスを開きました。
そして、このようなブループリントファイルとSpringテキストファイルの両方でこのサービスにアクセスしようとすると
しかし、バンドルの起動中に次の期待が寄せられています。
接続 ID:PLNL6237-55293-1401929434025-11:1201 の追加に失敗しました。理由: java.lang.SecurityException: ユーザー名 [null] またはパスワードが無効です。
バンドルで大要定義も定義しました。
どうすればこの問題を解決できますか? どんな助けでも大歓迎です。これをオンラインで見つけましたhttps://issues.apache.org/jira/i#browse/SM-2183 アップグレードする必要がありますか?
activemq - DS の代わりに Blueprint を使用した Fabric8 での ActiveMQ 接続
Fabric8では、ActiveMQ 接続を取得するための推奨される方法はmq -fabric profileを使用することです。これは、Declarative Services を介して ActitveMQConnection オブジェクトを提供します。 この例は GitHubで提供されており、問題なく動作します。
ただし、Declarative Services と Blueprint Services が Fabric8 (または実際には任意の OSGI 環境) で連携する方法をまだ見つけていないため、私の OSGI アプリケーションは DS または blueprint を使用する必要があります。両方を混在させることはオプションではないようです。
ブループリントを使用したい場合 (私はそうしています)、まず Web UI からブローカーを作成し、コンソールに戻ってcluster-listと入力し、Fabric8 がブローカーに割り当てたポートを見つけてから、接続を構成する必要があります。次のような青写真:
これは機能しますが、可能な限り避けたい手動の手順がいくつか含まれているため、展開に適しているとは言えません。主な問題は、そのポートがどうなるかわからないことです。設定ファイルをくまなく調べましたが、どこにも見つかりませんでした。
設計図を介して Fabric8 で ActiveMQ 接続を取得するためのよりクリーンで自動化された方法はありますか? それとも宣言型サービスを使用する必要がありますか?
java - @Cacheable アノテーションが osgi ブループリントで機能しない
Blueprint を使用して OSGi コンテナー内で ehcache を有効にする適切な方法は何ですか。非 osgi、非ブループリント プロジェクトの ehcache をオンにするには、単純にスプリング アノテーションを使用します。
org.springframework.cache.annotation.Cacheable
Java の内部:
xml 構成:
残念ながら、Blueprint と Spring を混在させることはできないため、OSGi と Blueprint 内ではそうではありません。名前空間ハンドラーが見つからないという例外を試してみました。これは @Cacheable アノテーションで可能ですか、それともスプリングサポートなしで ehcache を試す必要がありますか?
Karaf 2.3.0.redhat-610379、JBoss Fuse 6.1.0 を使用しています
java - ServiceMix と Camel : ルートを作成するにはどうすればよいですか?
パズルのこの部分は私の悪夢です。ServiceMix と 2 つの Java アプリを 2 つの異なる tomcat インスタンスにデプロイしました。
最初のアプリ:
2 番目のアプリ:
ここで、2 つのアプリが通信する必要がありますが、その通信を ServiceMix 経由で行いたいので、いくつかのログとすべてを実行できます。
ディレクトリにブループリント XML ファイルを作成しました./deploy
が、どのルートを入れればよいですか?
私はこれを行うことはできません:
それで、何をするのが正しいのですか?
ところで、私の XML ファイルは次のようになります。