|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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
内の findClass
ClassNotFoundException
protected String findLibrary(String libname)
ClassLoader
内の findLibrary
protected URL findResource(String name)
ClassLoader
内の findResource
protected Enumeration<URL> findResources(String name) throws IOException
ClassLoader
内の findResources
IOException
protected Package getPackage(String name)
ClassLoader
内の getPackage
protected Package[] getPackages()
ClassLoader
内の getPackages
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
ClassLoader
内の loadClass
ClassNotFoundException
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |