問題タブ [osgi-fragment]

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 投票する
2 に答える
586 参照

java - Eclipse RCP - 翻訳を提供するためのフラグメントの使用

Eclipse RCP で Fragments を使用することについて短い質問があります。現在、メッセージメカニズムを使用して文字列を翻訳しています。Messages.java と *.properties ファイルはプラグインにあり、すべて正常に動作しています。ここで、顧客ごとに異なる文字列/翻訳を使用したいと考えています。私が知る限り、プラグインフラグメントはここで可能な解決策です。フラグメントを使用してホスト プラグイン内のファイルをオーバーライドすることはできないと読みました。したがって、正しい *.properties ファイルを提供する 2 つの異なるフラグメントを使用する必要があると思います。次の図は、使用する必要があると思われるスキーマを示しています。

ホスト フラグメントの使用状況

フラグメント プロジェクトを構成した後 (ホスト プラグインが設定され、*.properties ファイルがホスト内のパッケージと同じ名前のパッケージに含まれています)、Eclipse IDE 経由で RCP アプリケーションを起動したいと考えています。2 つの実行構成も構成されています。OSGI コンソールを使用すると、フラグメントが存在し、解決済みであることがわかります。

しかし、私の問題は、フラグメントから提供された文字列/翻訳が使用されていないことです。アプリケーションを起動するたびに、いくつかの古い文字列/翻訳が使用されます (プロパティ ファイルをフラグメントに移動する前に使用されたもの)。

誰かが私が間違っていることと、私の解決策が正しいアプローチであるかどうかを知っていますか?

前もって感謝します :)

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

osgi - バンドルとそのフラグメントの間でクラスが重複している場合、クラスローダーはどのように動作しますか

OSGIフラグメントについて誤解がありますが、

C1がC2を使用する2つのクラス「com.company.C1」と「com.company.C2」を持つバンドル「B」をデプロイしたとします。次に、ホスト バンドル「B」のフラグメント「F」をデプロイしました。ここで、F にはクラス「com.company.C2」が 1 つだけ含まれています (最初のクラスのコードを少し変更しています)。

さて、クラス「com.company.C1」が実行されている場合、「B」からと「F」から、どちらのクラス(ファイル)「com.company.C2」が使用されるでしょうか。

同じクラスローダに同じクラス C2 が 2 回存在すると、実行時エラー (同じバージョンと異なるバージョン) が発生する可能性がありますか?

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

java - OSGi 拡張バンドル内でのサービスの登録

OSGi フレームワーク拡張バンドルを完全に理解するために遊んでいます。OSGi R6 仕様 ( 3.15 および 4.2.4.1 ) を見た後、ExtensionBundleActivator. 今、そのようなアクティベーター内にサービスを登録しようとしています。ただし、そのようなサービスを利用しようとすると、参照アノテーションがサービスの接続に失敗します。

これが私のコードです(バンドルの名前を変更しましたが、問題にはなりません):

そして、ここにそのような拡張バンドルのマニフェストがあります:

消費するバンドル (バンドルの一部):

私の質問は次のとおりです。私は何を間違っていますか? コンシューマーが拡張バンドルの登録済みサービスを検出できないのはなぜですか? それとも、フレームワークが禁止していることをしているだけなのかもしれません...この場合、拡張バンドルからサービスを提供することは不可能ですか? 拡張バンドル内のコードを操作するにはどうすればよいですか (つまり、拡張バンドル自体内の何かにアクセスできますか)?

ここでいくつかのメモ:

  1. OSGi の実装として felix を使用しています。
  2. 「ExtensionBundleExample」と「BundleExample」の両方が、felix の自動処理フォルダー内にロードされます (デフォルトは「bundle」ですが、config.properties「corebundles」フォルダーを使用するように調整しました。
  3. 出力には、「start extension bundle activator!」と正しく表示されます。しかし、 の参照を表示するときはactualBundleExample、出力に「null」が表示されます。
  4. BundleExample のオプションのカーディナリティは、目的をテストするために使用されます。コンシューマー コンポーネントが持つ「acivator」メソッドを呼び出したかっただけです (System.out.printlnコンソールを表示するために;
  5. 私の前の質問から、拡張バンドルは OSGi フレームワーク内のニッチであることは理解していますが、それでも理解したいと思っています。このトピックに関するインターネット上の例の欠如は非常に厄介です。

返信ありがとうございます。

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

osgi - java.lang.ClassCastException: com.sun.xml.internal.ws.client.sei.SEIStub を org.apache.cxf.frontend.clientproxy AEM OSGi にキャストできません

AEM の osgi 環境で Fuelsdk を使用しようとしています。このエラーが発生しています -

java.lang.ClassCastException: com.sun.xml.internal.ws.client.sei.SEIStub は org.apache.cxf.frontend.ClientProxy にキャストできません

これは、OSGi が、fuelsdk の依存関係が組み込まれているバンドルの前にシステム バンドルをロードするためです。バンドルが解決されます。このエラーは実行時に発生します。

OSGi クラスローダーが実行時に com.sun.xml.internal.ws.client.sei.SEIStub ではなく org.apache.cxf.frontend.ClientProxy を選択するように強制するにはどうすればよいですか?

「uses」ディレクティブの組み合わせを使用できますか? および/またはパッケージのインポート/エクスポート?

- を使用してクライアントを作成するよう提案されました。

factory.setServiceClass(); で使用するクラスを知りたいです。

factory.setAddress( ) でどのアドレスを使用する必要がありますか。それはエンドポイントアドレスですか?-- https://webservice.s6.exacttarget.com/Service.asmx

ヘルプは大歓迎ですありがとう

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

osgi - OSGI での AspectJ LoadTimeWeaving

iquinox jar (org.aspectj.runtime、org.aspectj.weaver、org.eclipse.equinox.weaving.aspectj on bundles folder および org.eclipse) を使用して、OSGI で AspectJ Load Time Weaving (Spring なし) を使用しようとしています。https://wiki.eclipse.org/Equinox_Weaving_QuickStartによると、org.eclipse.osgi の物理的な場所と同じフォルダーにある .equinox.weaving.hook

バンドルの読み込み順序は次のとおりです。

フック jar を開始する方法を知りたいですか? どんな助けにも感謝します... ps バンドル「org.eclipse.osgi」とフラグメント「org.eclipse.equinox.weaving.hook」を「リンクされたコンテンツを含むバイナリプロジェクト」としてワークスペースにインポートすることで、誰かが問題を解決しました、しかし、それを行う方法がよくわかりません: https://www.eclipse.org/forums/index.php?t=msg&th=440862

返信ありがとうございます

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

groovy - Groovy 2.4 から 2.5 にアップグレードする際の「フラグメント バンドルを開始できない」ための OSGi テストを解決しますか?

これは、 OSGi で実行しているときに groovy-all を 2.4 から 2.5 にアップグレードする方法に対するフォローアップの質問です。. Groovyのgroovy-allバージョン 2.5 ではアーティファクトを jar ファイルとして使用できなくなったため、上記の回答での提案は、代わりに個々の jar ファイルを使用することでした。次のようなPax Examを使用したテスト ケースがあります

関心のあるポイントは次のとおりです。

Groovy 2.5.6 にアップグレードしたいので、上記の行を次のように置き換えます。

しかし、テストを再実行すると、次のエラーが表示されます。

どうすればこれを解決できますか?