問題タブ [osgi-bundle]

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 に答える
1013 参照

apache-camel - servicemix でバンドルを開始できません

Servicemix でバンドルを実行しています。会社のリポジトリに移動し、対応する JAR をローカル マシンにダウンロードしました。その JAR を抽出したところ、この JAR には META-INF フォルダーが 1 つしかないことがわかりました。このフォルダー内には、Manifest.mf ファイルと、Spring 構成ファイルや Camel Context ファイルなどのリソースがあります。そこで私は最初の質問を受けました。この JAR のソース ファイル、つまり JAVA クラスなどはどこにあるのでしょうか。私が見たのは、マニフェスト ファイル pom.xml、別の pom プロパティ ファイル、および spring と camel 用の他のいくつかの構成ファイルだけでした。

これが私の次のステップにつながりました。ワークスペースにもこのプロジェクトのローカル コピーがありました。このプロジェクトをローカルでビルドし、プロジェクトのターゲット ディレクトリに JAR を見つけました。

次の手順はばかげているように見えるかもしれませんが、とにかく私はほとんど実験をしませんでした. ターゲットで見つけたこのJARを抽出し、コンテンツを表示するために抽出しました。私は maven-bundle-plugin を使用したため、これがバンドルであると信じていましたが、JAR を見て、それが単なる JAR または OSGI バンドルであると判断する方法はありません。わかりましたので、JARを抽出し、今回はコンパイルされたJavaクラスがあったと思います。

これで終わりじゃない、またおかしなことをした。この JAR からコンパイル済みのクラスを削除し、会社の中央リポジトリからコピーしたものとまったく同じにしました。ここで、JDK の JAR 作成ユーティリティを使用して JAR を作成しました。

これで 2 つの JARS ができました。1 つは会社の中央リポジトリからダウンロードしたものです。自分で作成した別のもの。それは他のものとまったく同じ内容を持っています。この JAR を作成する際にも、同じ manifest.mf を使用しました。(マニフェストが oSGI バンドルのバックボーンであることは知っていたので)。

このバンドルをサーバーのホーム ディレクトリに安全にコピーしました。最後に、次を使用してこのバンドル/JAR を Servicemix にインストールしました: install file:path_to_JAR/JAR_FILE_NAME。

正常にインストールされました。しかし、このバンドルを開始しようとしたとき。開始できませんでした。表示例外を使用すると、例外が表示されました。Bean をロードできず、アプリケーション コンテキストを初期化できず、さらに具体的な例外「ClassNotFound」例外が続きました。アプリケーション コンテキストで定義されたクラスを見つけることができなかったことを理解しています。しかし、なぜYYYYYYYYYY?

まったく同じ手順を実行し、何度も確認しました。私が起動できなかった場合、なぜ以前のものが起動して実行されているのですか。

OSGI 環境で作業したことのある人にとってはばかげているように聞こえるかもしれませんが、今は特に ServiceMix を再検討し始めています。

提案をありがとう。

0 投票する
0 に答える
58 参照

osgi-bundle - OSGi 依存関係管理

OSGi デプロイ バンドル Apache Felix コンテナーを使用しています。Maven プロジェクト (~100 バンドル) があり、maven-scr-plugin を使用してマニフェスト ファイルと DS 記述子を生成しています。以下に説明するコードと同様の問題があります。すべてのプロバイダーが ClassA に注入されなくなるまで、ClassB をアクティブにしないようにする必要があります (ClassA に触れずに解決策があれば素晴らしいと思いますが、それは可能です)。Provider2 は、ClassB が activate メソッドを呼び出した後に ClassA に追加されるため、出力に「デフォルト」値が表示されます。後で印刷メソッドをトリガーすると、期待どおりに機能します。

OSGi を使用した経験のある方は、アドバイスをお願いします。前もって感謝します。

バンドル 2:

バンドル 3:

バンドル4:

出力は次のとおりです。

0 投票する
2 に答える
1432 参照

jetty - OSGI バンドルの自動開始

Eclipse の外部で実行されるヘッドレス OSGI サーバーを作成しています。Jetty をサーブレット コンテナーとして使用し、Equinox を OSGI コンテナーとして使用しています。バンドルを使用してorg.eclipse.equinox.http.jettyJetty を OSGI に追加しています。プロンプトから手動で jetty と org.eclipse.equinox.http.registry を起動すると、すべて正しく実行されosgi>ます。ただし、これを無人で実行したいので、OSGi の起動時にこれらのバンドルを自動的に (または少なくともプログラムで) ロードする必要があります。どうすればいいですか?

つまり、OSGI バンドルを自動起動するにはどうすればよいでしょうか?

0 投票する
2 に答える
4736 参照

java - OSGI-INF フォルダーを生成しない

私は OSGI を初めて使用します。生成された jar ファイルで OSGI-INF フォルダーを取得するのに問題がありました。以下のようなフォルダ構造が必要です

  • メタINF
  • OSGI-INF
  • Com.mine.cq

Eclipse と m2e プラグインを使用しています。プロジェクトを実行すると、BUILD SUCCESS が表示されます。そして、生成されたjarファイルで以下のフォルダー構造を取得しています。

  • メタINF
  • Com.mine.cq

ここに私のPOM.xmlがあります

OSGI-INF フォルダが .jar ファイルにないのはなぜですか? コンポーネントを OSGI サービスとして登録する必要があるため、OSGO-INF フォルダーにいくつかの情報を設定する必要があります。それを成し遂げるために私を導いてください。

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

activemq - Kar ファイルを削除しても機能は残ります

.kar ファイルを介して Karaf にデプロイするアプリケーションをパッケージ化しています。deploy フォルダーから .kar ファイルを削除した後でも、多くの依存機能 (私の例では activemq と camel から) がインストールされたままになっていることに気付きました。

これは予想される動作ですか?私は展開が完全に可逆的であると予想していました。

私の機能ファイルは次のようになります:-

.kar ファイルを削除すると、次のようになります。

ありがとう、

J.