問題タブ [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.
java - Eclipse RCP - 翻訳を提供するためのフラグメントの使用
Eclipse RCP で Fragments を使用することについて短い質問があります。現在、メッセージメカニズムを使用して文字列を翻訳しています。Messages.java と *.properties ファイルはプラグインにあり、すべて正常に動作しています。ここで、顧客ごとに異なる文字列/翻訳を使用したいと考えています。私が知る限り、プラグインフラグメントはここで可能な解決策です。フラグメントを使用してホスト プラグイン内のファイルをオーバーライドすることはできないと読みました。したがって、正しい *.properties ファイルを提供する 2 つの異なるフラグメントを使用する必要があると思います。次の図は、使用する必要があると思われるスキーマを示しています。
フラグメント プロジェクトを構成した後 (ホスト プラグインが設定され、*.properties ファイルがホスト内のパッケージと同じ名前のパッケージに含まれています)、Eclipse IDE 経由で RCP アプリケーションを起動したいと考えています。2 つの実行構成も構成されています。OSGI コンソールを使用すると、フラグメントが存在し、解決済みであることがわかります。
しかし、私の問題は、フラグメントから提供された文字列/翻訳が使用されていないことです。アプリケーションを起動するたびに、いくつかの古い文字列/翻訳が使用されます (プロパティ ファイルをフラグメントに移動する前に使用されたもの)。
誰かが私が間違っていることと、私の解決策が正しいアプローチであるかどうかを知っていますか?
前もって感謝します :)
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 回存在すると、実行時エラー (同じバージョンと異なるバージョン) が発生する可能性がありますか?
java - OSGi 拡張バンドル内でのサービスの登録
OSGi フレームワーク拡張バンドルを完全に理解するために遊んでいます。OSGi R6 仕様 ( 3.15 および 4.2.4.1 ) を見た後、ExtensionBundleActivator
. 今、そのようなアクティベーター内にサービスを登録しようとしています。ただし、そのようなサービスを利用しようとすると、参照アノテーションがサービスの接続に失敗します。
これが私のコードです(バンドルの名前を変更しましたが、問題にはなりません):
そして、ここにそのような拡張バンドルのマニフェストがあります:
消費するバンドル (バンドルの一部):
私の質問は次のとおりです。私は何を間違っていますか? コンシューマーが拡張バンドルの登録済みサービスを検出できないのはなぜですか? それとも、フレームワークが禁止していることをしているだけなのかもしれません...この場合、拡張バンドルからサービスを提供することは不可能ですか? 拡張バンドル内のコードを操作するにはどうすればよいですか (つまり、拡張バンドル自体内の何かにアクセスできますか)?
ここでいくつかのメモ:
- OSGi の実装として felix を使用しています。
- 「ExtensionBundleExample」と「BundleExample」の両方が、felix の自動処理フォルダー内にロードされます (デフォルトは「bundle」ですが、
config.properties
「corebundles」フォルダーを使用するように調整しました。 - 出力には、「start extension bundle activator!」と正しく表示されます。しかし、 の参照を表示するときは
actualBundleExample
、出力に「null」が表示されます。 - BundleExample のオプションのカーディナリティは、目的をテストするために使用されます。コンシューマー コンポーネントが持つ「acivator」メソッドを呼び出したかっただけです (
System.out.println
コンソールを表示するために; - 私の前の質問から、拡張バンドルは OSGi フレームワーク内のニッチであることは理解していますが、それでも理解したいと思っています。このトピックに関するインターネット上の例の欠如は非常に厄介です。
返信ありがとうございます。
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
ヘルプは大歓迎ですありがとう
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
返信ありがとうございます
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 にアップグレードしたいので、上記の行を次のように置き換えます。
しかし、テストを再実行すると、次のエラーが表示されます。
どうすればこれを解決できますか?