2017-01-15 5 views
1

ユーザーが自分のアプリケーション用に独自のプラグインを作成できるようにしたい。使い方は非常に簡単です。アプリケーションが起動した後、JARファイルのファイルシステムパスを検索し、それらのすべてをロードします。すべてのjarファイルは私が顧客にリリースしたPluginFrameworkに依存しています。Javaアプリケーションでユーザーコードを読み込む

さて、質問:

  1. それはPluginFramework版プラグインのjarマニフェストファイルを追加し、コードから、それを検証することは可能ですか?
  2. 一部のプラグインで同じクラス名(およびパッケージのパッケージ)を共有している場合は、同じクラスローダーで読み込むことはできますか、プラグインごとに別のクラスローダを作成する必要がありますか?
  3. プラグインクラス(カスタムクラスローダによってロードされたもの)は、メインクラスローダによってロードされたクラスにアクセスできますか? PluginFrameworkクラスはすべてのプラグインで共有する必要があります。
  4. 特定のクラスローダによってロードされたすべてのクラスをアンロードする方法はありますか?

ありがとうございます。

+1

は、OSGiのための仕事のような音 - 多分あなたは、この最初について何かをお読みください。自家製のソリューションを開発するのではなく、よく知られている基準に固執するだけですか? これらのことはすべてOSGi内で実行できます。 –

+0

しかし、OSGiはうまく動作しません。多くの場合、どこからでもいくつか余分なジャーをロードするだけです。 – john16384

+0

@KonradSzałkowskiありがとう、私はそれが私のニーズをスイートであるかどうかを確認するためにOSGiについて読むでしょう – ItamarBe

答えて

1

以前は小さなプラグインシステムを書いていました。だから私はあなたの質問のいくつかに答えます。

  1. いいえ、私はそう思います。

  2. プラグインがまったく同じパッケージを使用する場合は、別のクラスローダーが必要です。私はパッケージを決定した瓶の名前の一部としてこれをしなかったので、彼らは自動的に一意である(フォルダに同じ名前の2つの瓶を置くことはできません)

  3. はい、できます。

  4. 何もこれらのクラスとクラスローダを指していない場合は、[はい、もうそれが見る、GC'dを取得します:Unloading classes in java?

関連する問題