ホームページ > Java > &#&チュートリアル > Java でクラスを効果的にアンロードし、複数の AppServer クラスのバージョンを管理するにはどうすればよいですか?

Java でクラスを効果的にアンロードし、複数の AppServer クラスのバージョンを管理するにはどうすればよいですか?

DDD
リリース: 2024-12-23 02:52:09
オリジナル
292 人が閲覧しました

How Can I Effectively Unload Classes and Manage Multiple AppServer Class Versions in Java?

Java でのクラス ローダーのアンロード

Java では、クラスのアンロードは、関連するクラス ローダーがガベージ コレクションされた場合にのみ発生します。これは、クラスとクラス ローダーへのすべての参照を削除する必要があることを意味します。

複数の AppServer からクラスをロードするための 1 つの潜在的な解決策は、階層型クラス ロード システムを実装することです。このシステムには次のことが含まれます。

  • 各 jar ファイル専用のクラス ローダーの作成
  • クラスの読み込みを特定の jar クラス ローダーに委任する各 AppServer のクラス ローダーの作成

このアプローチにより、それぞれに異なるバージョンの jar ファイルをロードできます。 AppServer.

OSGi がプロジェクトで実行可能なオプションではない場合は、カスタム クラス ローダーの実装を検討してください。

  1. JarClassLoader クラスを作成して、個々の JAR ファイルからクラスをロードします。
  2. ClassLoader を拡張する MultiClassLoader クラスを作成します。このクラスは、JarClassLoader インスタンスの配列またはリストを維持する必要があります。
  3. MultiClassLoader の defineClass() メソッドでは、クラス定義が見つかるか NoClassDefFoundException がスローされるまで、内部クラス ローダーを反復処理します。
  4. 新しい JarClassLoader インスタンスをMultiClassLoader.

サーバーへの接続ごとに MultiClassLoader をインスタンス化することで、各サーバーが同じクラスの異なるバージョンを使用できるようにすることができます。このアプローチは、ユーザー定義のスクリプトを含むクラスのロードとアンロードにうまく採用されています。

以上がJava でクラスを効果的にアンロードし、複数の AppServer クラスのバージョンを管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート