public class HybsLoader
extends java.lang.Object
AutoCompile機能、HotDeploy機能を実現するためのクラスローダーです。
AutoCompile機能は、クラスの動的コンパイルを行います。
AutoCompile機能を有効にするには、コンストラクタで与えられるHybsLoaderConfigオブジェクトで、
AutoCompileフラグをtrueにしておく必要があります。
HotDeploy機能は、クラスの動的ロードを行います。
HotDeploy機能を有効にするには、コンストラクタで与えられるHybsLoaderConfigオブジェクトで、
HotDeployフラグをtrueにしておく必要があります。
(1)クラスの動的コンパイル
loadClass(String)
メソッドが呼ばれた場合に、ソースディレクトより、対象となるソースファイルを
検索し、クラスのコンパイルを行います。
コンパイルが行われる条件は、「クラスファイルが存在しない」または「クラスファイルのタイムスタンプがソースファイルより古い」です。
コンパイルを行うには、JDKに含まれるtools.jarが存在している必要があります。
tools.jarが見つからない場合、エラーとなります。
また、コンパイルのタスクのクラス(オブジェクト)は、JVMのシステムクラスローダー上のクラスに存在しています。
このため、サーブレットコンテナで、通常読み込まれるWEB-INF/classes,WEB-INF/lib以下のクラスファイルも、
そのままでは参照することができません。
これらのクラスを参照する場合は、HybsLoaderConfigオブジェクトに対してクラスパスを設定しておく必要があります。
(2)クラスロード
クラスの動的ロードは、クラスローダーの入れ替えによって実現しています。
HotDeploy機能を有効にした場合、読み込むクラス単位にURLClassLoaderを生成しています。
クラスロードを行う際に、URLClassLoaderを新しく生成することで、クラスの再ロードを行っています。
つまり、HotDeployにより読み込まれるそれぞれのクラスは、お互いに独立した(平行な位置に存在する)関係に
なります。
このため、あるHotDeployによりロードされたクラスAから、同じくHotDeployによりロードされたクラスBを直接参照
することができません。
この場合は、クラスBのインターフェースを静的なクラスローダー(クラスAから参照できる位置)に配置することで、クラスB
のオブジェクトにアクセスすることができます。
5.1.1.0 (2009/12/01) 新規作成 |
コンストラクタと説明 |
---|
HybsLoader(HybsLoaderConfig option)
HybsLoaderOptionを使用してHybsLoaderオブジェクトを生成します。
|
修飾子とタイプ | メソッドと説明 |
---|---|
java.lang.Class |
load(java.lang.String clsNm)
指定されたクラス名のクラスをロードします。
|
java.lang.Object |
newInstance(java.lang.String clsName)
指定されたクラス名のクラスをロードし、デフォルトコンストラクターを使用して
インスタンスを生成します。
|
java.lang.String |
toString()
このオブジェクトの内部表現を、文字列にして返します。
|
public HybsLoader(HybsLoaderConfig option)
option
- HybsLoaderを構築するための設定情報public java.lang.Class load(java.lang.String clsNm)
clsNm
- クラス名public java.lang.Object newInstance(java.lang.String clsName)
clsName
- クラス名(Qualified Name)5.1.8.0 (2010/07/01) Exceptionのエラーメッセージの修正(状態の出力) |
6.8.2.3 (2017/11/10) java9対応(cls.newInstance() → cls.getDeclaredConstructor().newInstance()) |
public java.lang.String toString()
toString
クラス内 java.lang.Object
6.1.0.0 (2014/12/26) refactoring |
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.