|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface ClassLoaderRepository
このインタフェースのインスタンスは、MBean サーバーに登録された ClassLoader のリストを保持するために使用されます。これらのインスタンスは、登録済み ClassLoader を使ってクラスをロードするために必要なメソッドを提供します。
ClassLoaderRepository
内の最初の ClassLoader は、常に MBean サーバー固有の ClassLoader です。
ClassLoader
のサブクラスになっておらず、PrivateClassLoader
インタフェースを実装していない MBean を MBean サーバーに登録すると、この MBean は、MBean サーバーの ClassLoaderRepository
の末尾に追加されます。この MBean の登録を解除すると、ClassLoaderRepository
からこの MBean が削除されます。
ClassLoaderRepository
内の MBean の並び順には意味があります。ClassLoaderRepository
内の任意の 2 つの MBean、X と Y について考えてみましょう。 Y の登録を開始する前に X の登録が完了していた場合、X は Y の前に並べられます。X と Y が同時に登録された場合、これらの並び順は不確定になります。MBean の登録処理は、MBeanServer.registerMBean(java.lang.Object, javax.management.ObjectName)
メソッドの呼び出し、またはいずれかの MBeanServer
.createMBean
メソッドの呼び出しに相当します。
MBeanServerFactory
メソッドの概要 | |
---|---|
Class<?> |
loadClass(String className)
クラスローダーのリストから、指定された名前のクラスをロードします。 |
Class<?> |
loadClassBefore(ClassLoader stop,
String className)
クラスローダーのリストからクラスをロードし、指定されたクラス名の位置で処理を停止します。 |
Class<?> |
loadClassWithout(ClassLoader exclude,
String className)
クラスローダーのリストから、前回指定された名前のクラス以外のクラスをロードします。 |
メソッドの詳細 |
---|
Class<?> loadClass(String className) throws ClassNotFoundException
クラスローダーのリストから、指定された名前のクラスをロードします。ClassLoaderRepository 内の ClassLoader に、ClassLoader.loadClass(String)
メソッドを使ってクラスをロードせよという命令が送られます。その結果、正常に Class
オブジェクトが返された場合、これがこのメソッドの戻り値になります。ClassNotFoundException
がスローされた場合、次の ClassLoader で引き続き検索が行われます。この ClassLoader も例外をスローした場合、このメソッドは例外をスローします。リストの末尾に達した場合、ClassNotFoundException
がスローされます。
className
- ロードされるクラスの名前
ClassNotFoundException
- 指定されたクラスが
見つからない場合Class<?> loadClassWithout(ClassLoader exclude, String className) throws ClassNotFoundException
クラスローダーのリストから、前回指定された名前のクラス以外のクラスをロードします。exclude
を除く ClassLoaderRepository 内の ClassLoader に、ClassLoader.loadClass(String)
メソッドを使ってクラスをロードせよという命令が送られます。その結果、正常に Class
オブジェクトが返された場合、これがこのメソッドの戻り値になります。ClassNotFoundException
がスローされた場合、次の ClassLoader で引き続き検索が行われます。この ClassLoader も例外をスローした場合、このメソッドは例外をスローします。リストの末尾に達した場合、ClassNotFoundException
がスローされます。
ClassLoaderRepository 内に、このメソッドを loadClass
メソッドから呼び出す ClassLoader があるとします。 同じ ClassLoaderRepository 内に、この ClassLoader と同時に同じ処理を行う ClassLoader がもう 1 つ存在する場合、どちらかがデッドロックになります。デッドロックを回避するためには、loadClassBefore(java.lang.ClassLoader, java.lang.String)
メソッドを使用することをお勧めします。
className
- ロードされるクラスの名前exclude
- 除外されるクラスローダー。null の場合、
このメソッドは loadClass(className)
と等価になる
ClassNotFoundException
- 指定されたクラスが
見つからない場合Class<?> loadClassBefore(ClassLoader stop, String className) throws ClassNotFoundException
クラスローダーのリストからクラスをロードし、指定されたクラス名の位置で処理を停止します。ClassLoaderRepository 内の ClassLoader に、ClassLoader.loadClass(String)
メソッドを使ってクラスをロードせよという命令が送られます。その結果、正常に Class
オブジェクトが返された場合、これがこのメソッドの戻り値になります。ClassNotFoundException
がスローされた場合、次の ClassLoader で引き続き検索が行われます。この ClassLoader も例外をスローした場合、このメソッドは例外をスローします。検索が stop
またはリストの末尾に達した場合、ClassNotFoundException
がスローされます。
通常、このメソッドは、stop
の loadClass
メソッドから呼び出されます。これにより、ClassLoaderRepository
内の指定のローダーより前のローダーを照会することができます。stop
に達した時点で検索が終了するので、同時クラスロードによるデッドロックを回避することができます。
className
- ロードされるクラスの名前stop
- クラスローダー。この位置で処理が停止される。null の場合、
このメソッドは loadClass(className)
と等価になる
ClassNotFoundException
- 指定されたクラスが
見つからない場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。