問題タブ [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.
jsp - OSGi バンドルの /resources ディレクトリにある .jsp ファイルにパッチを適用/オーバーライドする
複数のクラス ファイル、jsp ファイル、css ファイルなどを含む osgi バンドル (xyz.jar) があるとします。osgi フラグメント バンドルおよび/または require-bunlde を使用して、このバンドル内の 1 つの .jsp ファイル (admin.jsp など) にパッチを適用する必要があります。
私が行ったことは、パッチが適用されたバージョンの .jsp ファイルを含むパッチ バンドルを、正しいディレクトリ構造にのみ作成したことです。これをメイン バンドルに添付するために、xyz.jar へのフラグメント バンドルを作成し、パッチ バンドルを必須 (require-bundle) としてマークしました。
以前、これと同じ方法を使用して、osgi バンドル内の .class ファイルにパッチを適用しました。ただし、.jsp ファイルにはパッチが適用されていないようです。
ここで何が間違っているのか疑問に思っています。osgi バンドル内にある単一の .jsp ファイルにパッチを適用するより良い方法はありますか?
java - OSGi フラグメント エクスポート パッケージはホストに貢献する必要がありますか?
Export-Package
ホストに提供されているパッケージのディレクティブを使用しているフラグメントに気付きました。
このバンドルは、いくつかの追加クラスをホストの org.eclipse.jetty.osgi.boot.utils パッケージに提供します。
理想的には、可能な限りパッケージを非公開にするよう努めるべきだと思いますが、この場合はどうでしょうか? 私のコードの残りの部分はどれも必要としませんorg.eclipse.jetty.osgi.boot.utils
。
maven - フラグメント プラグインを使用して Eclipse プラグインにパッチを適用し、それを Eclipse 製品にデプロイするにはどうすればよいですか?
ここで説明されているように、フラグメント プラグインを使用して既存のプラグインにパッチを適用しようとしています。
Fragments を使用してプラグインにパッチを適用する手順 - Eclipsepedia
ホスト プラグインへのパッチには、単一のクラス ファイルを更新されたクラス ファイルに置き換えることが含まれます。しかし、「ホスト パッケージのマニフェスト設定を変更する」セクションの手順 5) から 11)の概念がわかりません。ここでは、ホスト プラグインを変更するように指示されています。ホストプラグインに触れる必要がないというのが全体的な考えだと思いました-パッチを追加するのは、デプロイするフラグメントですか?
私の製品は、Eclipse プラットフォームと org.eclipse.cdt 機能に加えて、cdt を使用する独自のプラグインで構成されています。パッチを適用したいのは org.eclipse.cdt.core プラグインです。
eclipse wiki の手順に従い、ホスト プラグインにパッチを適用するパッケージとクラスを含むフラグメント プロジェクトを作成しました。これを maven でビルドしました。この製品を実行すると、フラグメント プラグインがアクティブであることがわかりますが、含まれているクラスが呼び出されません。元のホスト プラグイン クラスは .
問題は、変更されたホスト プラグインがデプロイされた製品に含まれていないことだと思います。ホストプラグインをデプロイするためのアドバイスに関するフラグメントガイドに含まれる手順はありません。どのように/なぜそれが必要なのかわかりません.
(私は過去にこの種の機能パッチを使用して成功しましたが、PDE を使用してのみ作成しました。機能パッチを Maven でビルドすることはできませんでした。そのため、フラグメントを使用して確認することを検討しています。それらをMavenでビルドできる場合。)
更新*: Tycho プラグインを使用して Maven Tycho - Building Eclipse plug-ins with mavenを使用してビルドを作成します。
「OSGi コア リリース 5 仕様」へのリンクありがとうございます。それは有益な読み物でした。
したがって、私の理解が正しければ、ホストプラグインがフラグメントでパッチされるようにすでに「準備」されている場合にのみ、フラグメントはホストプラグインの上にそのクラスをオーバーレイできます。これには、ホスト プラグインのマニフェストの変更が含まれます。具体的には: 1. 新しいライブラリを追加し、それを「.」の上に移動します。パッケージ。このライブラリをビルド プロパティから削除します。ライブラリは単なる参照であり、ホスト プラグインによって作成されるべきではありません。+ Eclipse-ExtensibleAPI: true を manifest.mf ファイルに追加 + バージョン番号を上げます。
私の場合、フラグメントを使用して org.eclipse.cdt.core プラグインにパッチを適用したい場合、org.eclipse.cdt.core プラグインの準備済みバージョンとフラグメント プラグインを提供する必要があるようです。
*: 回答のマナーがよくわからない。多くのことをするのに十分な評判がありません。コメント ボックスは少数の文字のみを受け入れます。
osgi - OSGi の JPA - 単一のスキーマですが、エンティティは複数のバンドルにあります
1つの db スキーマと 2 つ (またはそれ以上) のバンドルがあるとします。
質問: JPA エンティティ (単一のスキーマ用) を複数のバンドルに分散させることは可能ですか?
(最初はフラグメントバンドルを考えていましたが、他の可能性があるかどうか知りたいです)
osgi - Apache tomcat catalina springsource バンドルが Equinox OSGi コンテナーで解決されない
Equinox OSGi コンテナー (バージョン 3.10.1.v20140909-1633) を起動し、apache catalina springsource バンドルcom.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
およびその他の依存バンドルをロードする Java アプリケーションがあります。以下は私のconfig.iniファイルです。
ss
OSGi コンソールに接続し、コマンドを使用してすべてのバンドルを一覧表示すると、次の結果が表示されます
ここで、バンドルcom.springsource.org.apache.jasper.springsource_6.0.20.S2-r5956
と com.springsource.org.apache.coyote.springsource_6.0.20.S2-r5956
は、親バンドルが であるフラグメント バンドルですcom.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
。
これら 3 つのバンドルがすべてインストールされていることがわかります。com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
コマンドを使用して手動でバンドルを開始しようとすると、start 73
次の例外が表示されます。
しかし、コヨーテ バンドルとジャスパー バンドルの両方のインポート パッケージとエクスポート パッケージを見てみると、適切でした。実際、それらは springsource リポジトリから取得されます。
bundle の不足している制約を取得できませんでしたcom.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
。
ここで、どのバンドルが最初に解決されますか? 親バンドルまたはフラグメントですか? これを解決して、すべてのバンドルが解決され、バンドルが正常に開始されるようにするにはどうすればよいですか?com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
java - プラグインでのフラグメントの使用
私のプロジェクトでは、すべての JUnit テスト ケースが Eclipse プラグインではなく Eclipse フラグメントで記述されていることがわかりました。そして、各テスト クラスを JUnit プラグインとして実行します。私は概念についてあまり明確ではありません。私はこの概念に比較的慣れていません。
Plugins for Tests でフラグメントを使用することについて、より良い知識を得るためにググったところです。私が理解しているのは、フラグメントとホスト プラグインが同じクラス ローダーを共有しているということです。私の理解が間違っている場合は修正してください。
しかし、下の行の意味がわかりませんでした。
Eclipse プラグインでテストを作成すると、テスト クラスは別の Classloader によってロードされるため、テスト対象のクラスの非公開メソッドにはアクセスできません。
非公開メソッドにアクセスできないのはなぜですか? 上記の意味を簡単な例で理解するのに役立つ人はいますか?
eclipse - カスタム vm arg を使用して Eclipse で OSGi フラグメントをエクスポートしようとすると、「Unsatisfied native code filter」エラーが発生する
この性質の質問は他に 1 つしかないようですが、その回答によって提案された解決策は私にとって効果的ではありませんでした。Spring Tool Suite (本質的には Kepler 4.3.2 SR2) を IDE として使用して、ネイティブ C++ コードの最新バージョンを含む OSGi フラグメントを開発しています。フラグメントは、このネイティブ コードが統合されることを意図しているさまざまな環境に、さまざまなバージョンのソフトウェアが存在する可能性を考慮して存在します。
ただし、このバージョン番号を表すために使用するカスタム vm 引数が原因で、このフラグメントをエクスポートできません。
マニフェストは次のようになります。
エラーは言う:
フィーチャー org.eclipse.pde.container.feature からの包含の処理: バンドル com.ourcompany.oursoftwarepackage.xyz.win64xyz4127_8.6.2.qualifier の解決に失敗しました.: ネイティブ コード フィルターが満たされていません: xyzintegration.dll; selection-filter="(oursoftwarepackage.xyzVersion=4.12.7)".
選択フィルター句を削除すると、エクスポートされているように見えますが、実際のアーティファクトは生成されません。
上記のリンクから推定した提案は、vmarg を含めることでした。
プラグイン開発ターゲット環境で。しかし、それは OSGi フレームワークを満たしていないようでした。現在、エクスポートを続行できるようにフラグメントを解決する方法について途方に暮れています。