問題タブ [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 に答える
13326 参照

java - mavenバンドルプラグインを使用してOSGiバンドルに依存関係のjarを含める方法は?

依存関係の jar を追加したい OSGi 準拠のバンドル (jar) があります。追加したい依存関係は、データベース ドライバーです。その jar は、私が使用している Karaf コンテナーの lib フォルダーには存在せず、そこに手動で追加する方法はありません。バンドルをデプロイできる deploy フォルダーにしかアクセスできません。バンドルをパッケージ化するために Maven バンドル プラグインを使用しています。そのため、バンドルに依存関係の jar を追加する方法があるかどうかを知りたいと思いました。現在、7zip でバンドルを開き、jar にコピーして jar を追加することで、jar をバンドルに手動で追加していますが、正常に動作します。タグを使用してみまし<embed-dependency>たが、その後バンドルがデプロイされません。それを行う方法はありますか?

pom.xml以下は、バンドルに追加したい依存関係です。

のビルド タグは次のとおりですpom.xml

デプロイしようとすると、次のエラーが表示されます。

0 投票する
5 に答える
5623 参照

java - osgi コンテナーで壊れた Spring コンポーネント スキャン

spring DI を既存の jaxws プロジェクトに統合しようとしています。これは tomcat でローカルに動作していますが、リモート コンテナーにデプロイすると、クラスパス スキャンが実行されないように見えます。ログを見ると、Tomcat では @Components が Bean として登録されていますが、リモート サーバーではまったく言及されていません。

私が見ているのは、以下のスタックトレースです。私が使用しなければならない風変わりな Web コンテナーにかかっているようです。それは「IBM i 用の統合アプリケーション サーバー」です。http://www-03.ibm.com/systems/i/software/ias/これは Eclipse アーキテクチャーに基づいて構築されており、war ファイルをインストールすると、各アプリがバンドルに変換されると思います。それは素晴らしいことですが、クラスパスのスキャンが壊れています。:(

誰かがこれに対する解決策を持っていますか? ありがとう

例外をスローするコードを見ると、プロトコルが file:// であるかどうかをチェックしています。

アプリがファイル システムに展開されていることがわかります。春にこのローダーをオーバーライドして、プロトコルを気にせず、明らかにまだ機能する方法があるのだろうか? コンテナーの osgi 機能は気にしません。アプリをデプロイしたいだけです。

フォールバックは、xml で Bean を定義することを優先してクラスパス スキャンを放棄するようですが、それは本当の一歩です。:(

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

osgi - Bundle-Classpath の jar からの Import-Package エントリを処理する方法は?

Bundle-Classpath にいくつかの jar を配置しました。以下の行は、Felix プラグインを使用してバンドル用の manigest.mf を作成する pom.xml のエントリを示しています。

これらの jar にはパッケージをインポートするクラスがありますが、私が見る限り、すべて MANIFEST.MF があり、これには Import-Package ステートメントの独自の (正確な) リストがあります。

ただし、(Maven とバンドル プラグインを使用して) プロジェクトをビルドすると、特定のクラスへの参照を解決できないため、エラーが報告されます。具体的には、エラーは次のとおりです。

これらのエラーはすべて com.springsource.org.h2-1.0.71.jar から発生し、これらのパッケージはすべてその jar のマニフェストにインポートされます。

理解できません:

  • これらのパッケージが com.springsource.org.h2-1.0.71.jar の MANIFEST>MF に既にインポートされている場合、Maven バンドル プラグインが不平を言うのはなぜですか
  • 問題が com.springsource.org.h2-1.0.71.jar からのみ発生するのはなぜですか? com.springsource.org.apache.lucene.search-2.3.2.jar には MANIFEST.MF に Import-Package のエントリもいくつかありますが、その特定の jar を削除しようとすると、ビルドは正常に完了しますか?

2点目については、調べてみたところ、パターンがあるような気がします。com.springsource.org.apache.lucene.search-2.3.2.jar がそのマニフェストで指定するすべてのインポートは、同じく指定されている com.springsource.org.apache.lucene-2.3.2.jar によって満たされています。 Bundle-Classpath で。

com.springsource.org.apache.lucene-2.3.2.jar (Bundle-Classpath 上にある) によって満たされている com.springsource.org.h2-1.0.71.jar の依存関係は、ただし、エラー メッセージには、Bundle-Classpath の jar によって満たされない依存関係がエラー メッセージにリストされています。

何が起こっているのかよくわかりません。Bundle-Classpath で指定される jar ファイルに関するルールは何ですか? マニフェストのインポート (Import-Package で指定されている場合でも) 要素は、メイン プロジェクトの pom にリストする必要がありますか? それとも、これはMavenバンドルプラグインが強制しているものですか? 後者の場合、強制から逃れる方法はありますか?

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

osgi - OSGI バンドルを有効にする方法は?

私はAdobe CQ5で作業しています。実装のみを含むプロジェクトを作成しました。プロジェクトのタイトルは Web Crawler です。

そして、そのプロジェクトは、最初のシードを追加するだけの 1 つのクラスによって開始されます。

プロジェクトの OSGI バンドルを作成し、それもデプロイします。

ここで私の質問は、バンドルを開始するにはどうすればよいですか、つまり、シードを追加するにはどうすればよいですか?

そのために、アクティベータークラスを作成し、関数を開始メソッドに入れるように指示するこのリンクを読みました。私も同じことをしました。しかし、それはバンドルを実行するのに役立ちません。

指定されたバンドルを実行する方法を教えてください。

編集 No.1

特定のチュートリアルで指定されたMANIFEST.MFファイルを作成する方法を教えてください。

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

multithreading - Display.asyncExec() は実行できませんか?

2 つのファイル jar が分離されています。

メソッドDisplay.asyncExecは通常、SWT ブラウザ コントロールによって実行される JavaScript メッセージ ダイアログがある場合を除き、実行できます。

環境: Linux、SWT、OSGi バンドル

私を助けてください。

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

java - OSGI バンドル優先メカニズム

OSGI モデルを使用する Java アプリケーションが 1 つあります。

2 つの既存のバンドルがあります。

  1. コムモス
  2. com.login

com.loginAuthenticatorサービス(認証用の独自サービス)の実装と登録があります。com.loginだけでなく、com.mosこの認証サービスを使用します。

現在、1 つの新しいバンドル ( com.new) を作成しており、Authenticator Service を追加/変更する必要があるため、独自の実装を作成しました。

プログラム/アプリケーションを起動すると、新しいバンドルcom.newが後で実行されるとcom.login、すべてのバンドルが新しいバンドルを使用します。Authenticator Serviceただし、com.newバンドルが前に実行されるcom.loginと、古いバンドルAuthenticator Serviceが利用可能になります。

OSGIどのバンドルを最初に開始するかなど、何らかの優先順位を付けるメカニズムはありますか。