|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
java.lang.Objectjava.lang.ClassLoader
jp.sourceforge.deployer.DeployerClassLoader
public final class DeployerClassLoader
アーカイブ・ファイル配置後のクラスやリソースを読み込むクラスローダーです。
アーカイブ・ファイルにはクラス・ファイル、リソース、jarファイルを含めることが出来、コンストラクタでディレクトリを指定することでクラスローダーの管理下に置くことができます。例えば、classes/からクラス・ファイル、lib/からjarファイルを検索するように初期化することが出来ます。ディレクトリは複数指定することが出来ます。
内部的にはURLClassLoaderクラスを使用しています。コンストラクタで指定された検索対象ディレクトリ、及びjarディレクトリに含まれるjarファイルは、URLClassLoaderクラスにURLで渡されます。dispose()メソッドが呼び出されると、URLClassLoaderインスタンスは破棄され、強制的にガベージコレクタを動かすことで完全に破棄します(破棄しようとします。クラスローダーが読み込んだクラス内でリソースリークが発生している場合、破棄は失敗し、ブロックしてしまいます)。
ホット・デプロイを前提としているので、クラスローダーが読み込んだリソースなどを破棄するdispose()メソッドが用意されています。例えばDeployerクラスと連携する場合、DeployerListener.undeployEnd(Deployer, File)メソッドの呼び出しでこのクラスローダーを破棄することが出来ます。
| コンストラクタの概要 | |
|---|---|
DeployerClassLoader(File[] fileDirectories,
File[] jarDirectories)
DeployerClassLoaderインスタンスを初期化します。 |
|
DeployerClassLoader(File[] fileDirectories,
File[] jarDirectories,
ClassLoader parent)
DeployerClassLoaderインスタンスを初期化します。 |
|
| メソッドの概要 | |
|---|---|
protected Package |
definePackage(String name,
String specTitle,
String specVersion,
String specVendor,
String implTitle,
String implVersion,
String implVendor,
URL sealBase)
|
void |
dispose()
クラスローダーを破棄します。 |
void |
dispose(int timeout)
クラスローダーを破棄します。 |
protected Class<?> |
findClass(String name)
|
protected String |
findLibrary(String libname)
|
protected URL |
findResource(String name)
|
protected Enumeration<URL> |
findResources(String name)
|
protected Package |
getPackage(String name)
|
protected Package[] |
getPackages()
|
protected Class<?> |
loadClass(String name,
boolean resolve)
|
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
public DeployerClassLoader(File[] fileDirectories,
File[] jarDirectories,
ClassLoader parent)
throws MalformedURLException
DeployerClassLoaderインスタンスを初期化します。
fileDirectories - クラス・ファイル、リソースなどを検索するディレクトリ。複数指定することが出来ます(例えば、classes/、conf/のように)。jarDirectories - jarファイルを検索するディレクトリ。このディレクトリ以下に存在するjarファイルを読み込みます。parent - 親クラスローダー。
MalformedURLException - 指定されたディレクトリの形式が不正である場合。
public DeployerClassLoader(File[] fileDirectories,
File[] jarDirectories)
throws MalformedURLException
DeployerClassLoaderインスタンスを初期化します。
fileDirectories - クラス・ファイル、リソースなどを検索するディレクトリ。複数指定することが出来ます(例えば、classes/、conf/のように)。jarDirectories - jarファイルを検索するディレクトリ。このディレクトリ以下に存在するjarファイルを読み込みます。MalformedURLException - 指定されたディレクトリの形式が不正である場合。| メソッドの詳細 |
|---|
public void dispose()
クラスローダーを破棄します。これにより、クラスローダーは使用不可状態になり、クラスローダーに属していたクラスは解放されます。
このメソッド呼び出しはタイムアウトしません。すなわち、以下のコードと等価です。
cl.dispose(0);
public void dispose(int timeout)
クラスローダーを破棄します。これにより、クラスローダーは使用不可状態になり、クラスローダーに属していたクラスは解放されます。
メソッド呼び出しの結果、クラスローダーはすぐに使用不可状態になりますが、属しているクラスの解放はすぐには行われない可能性があります。これは、クラスローダーのリソースの解放を強制ガベージコレクタに頼っているためです。このため、タイムアウト時間を指定することが出来ます。タイムアウト時間は破棄を試みますが、それでも破棄出来ない場合はClassLoaderUnloadFailException例外をスローします。この場合、クラスローダーは使用不可状態になっていますが、クラスは破棄されていません。完全に破棄するために、このメソッド呼び出しを何度も試みることが出来ます。
timeout - 破棄を試みるタイムアウト時間。0以下の場合、タイムアウトしない。
protected Package definePackage(String name,
String specTitle,
String specVersion,
String specVendor,
String implTitle,
String implVersion,
String implVendor,
URL sealBase)
ClassLoader 内の definePackage
protected Class<?> findClass(String name)
throws ClassNotFoundException
ClassLoader 内の findClassClassNotFoundExceptionprotected String findLibrary(String libname)
ClassLoader 内の findLibraryprotected URL findResource(String name)
ClassLoader 内の findResource
protected Enumeration<URL> findResources(String name)
throws IOException
ClassLoader 内の findResourcesIOExceptionprotected Package getPackage(String name)
ClassLoader 内の getPackageprotected Package[] getPackages()
ClassLoader 内の getPackages
protected Class<?> loadClass(String name,
boolean resolve)
throws ClassNotFoundException
ClassLoader 内の loadClassClassNotFoundException
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||