- すべての実装されたインタフェース:
Closeable
,Externalizable
,Serializable
,AutoCloseable
,MLetMBean
,MBeanRegistration
- 直系の既知のサブクラス:
PrivateMLet
public class MLet extends URLClassLoader implements MLetMBean, MBeanRegistration, Externalizable
MLET
タグの構文は次のとおりです。
<MLET
CODE =
class | OBJECT =
serfile
ARCHIVE = "
archiveList"
[CODEBASE =
codebaseURL]
[NAME =
mbeanname]
[VERSION =
version]
>
[
arglist]
</MLET
>
以下にそれぞれの意味を示します。
CODE =
クラス-
取得するMBeanのパッケージ名を含む完全Javaクラス名を指定する属性です。
ARCHIVE
属性で指定された.jar
ファイルのうちいずれかに、MBeanのコンパイル済み.class
ファイルが含まれている必要があります。CODE
かOBJECT
のいずれかが存在している必要があります。 OBJECT =
serfile-
取得するMBeanの直列化表現を含む
.ser
ファイルを指定する属性です。 このファイルは、ARCHIVE
属性で指定された.jar
ファイルのうちいずれかに含まれている必要があります。.jar
ファイルにディレクトリ階層が含まれる場合は、この階層内のファイル・パスを指定します。 そうしないと、一致は見つかりません。CODE
かOBJECT
のいずれかが存在している必要があります。 ARCHIVE = "
archiveList"
-
取得するMBeanによって使用されるMBeanまたはその他のリソースを含む1個以上の
.jar
ファイルを指定する必須属性です。.jar
ファイルのうちいずれかに、CODE
またはOBJECT
属性で指定されたファイルが含まれている必要があります。 アーカイブ・リストに複数のファイルが含まれる場合、次の条件が必要になります。- 各ファイルがカンマ(,)で区切られていること。
- archivelistが二重引用符で囲まれていること。
.jar
ファイルが、コード・ベースURLで指定されたディレクトリに格納されている必要があります。 CODEBASE =
codebaseURL-
取得するMBeanのコード・ベースURLを指定するオプション属性です。
ARCHIVE
属性で指定された.jar
ファイルを含むディレクトリを識別します。 この属性を指定するのは、.jar
ファイルがm-letテキスト・ファイルと同じディレクトリにない場合のみです。 この属性が指定されていない場合、m-letテキスト・ファイルのベースURLが使用されます。 NAME =
mbeanname-
MBeanインスタンスをm-letサービスに登録するとき、このMBeanインスタンスに割り当てるオブジェクト名を指定するオプション属性です。 mbeannameがコロン文字(:)で始まる場合、オブジェクト名のドメイン部分は、
MBeanServerConnection.getDefaultDomain()
によって返されるMBeanサーバーのデフォルト・ドメインです。 VERSION =
version-
取得するMBeanと関連
.jar
ファイルのバージョン番号を指定するオプション属性です。 バージョン番号を使用すると、m-letテキスト・ファイルの次回ロード時に、サーバーから.jar
ファイルをロードして、キャッシュ内にローカルに格納されているファイルを更新することができます。versionには、0以上の複数の10進整数をピリオドで区切って指定します。 - arglist
-
インスタンス化するMBeanのパラメータ(複数可)のリストを指定するオプション属性です。 リストに含まれるのは、MBeanのコンストラクタに渡されるパラメータです。 arglist内の各項目は、次の構文を使って指定します。
- <
ARG TYPE=
argumentTypeVALUE=
値> - 以下にそれぞれの意味を示します。
- argumentTypeは、MBeanのコンストラクタにパラメータとして渡される引数の型です。
引数リスト内に指定する引数の型は、Javaプリミティブ型かJava基本型であるべきです(
java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Long, java.lang.Integer, java.lang.Float, java.lang.Double, java.lang.String
)。 - <
m-letサービスは、java.net.URLClassLoader
を拡張します。このサービスを使って、エージェントのVM内のリモート・クラスおよびjarファイルをロードできます。
注 - MLet
クラス・ローダーは、MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer)
を使って、ロードされたjarファイル内に見つからないクラスをロードします。
- 導入されたバージョン:
- 1.5
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 MLet()
委譲関係の親になっているデフォルトのClassLoaderを使って、新しいMLetを構築します。MLet(URL[] urls)
委譲関係の親になっているデフォルトのClassLoaderを使って、指定されたURLの新しいMLetを構築します。MLet(URL[] urls, boolean delegateToCLR)
委譲関係の親になっているデフォルトのClassLoaderを使って、指定されたURLの新しいMLetを構築します。MLet(URL[] urls, ClassLoader parent)
指定されたURLの新しいMLetを構築します。MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
指定されたURLの新しいMLetを構築します。MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryの新しいMLetを構築します。MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryの新しいMLetを構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 void
addURL(String url)
指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。void
addURL(URL url)
指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。protected URL
check(String version, URL codebase, String jarfile, MLetContent mlet)
このメソッドは、キャッシュ機能とバージョン管理機能をサポートするためにこのサービスを拡張するときオーバーライドされます。protected Class<?>
findClass(String name)
再定義予定のクラス・ローダーのmainメソッドです。protected String
findLibrary(String libname)
ネイティブ・ライブラリの絶対パス名を返します。String
getLibraryDirectory()
ネイティブ・ライブラリをメモリーにロードする前に格納するライブラリ・ローダーによって現在使用されているディレクトリを取得します。Set<Object>
getMBeansFromURL(String url)
MBeanサーバーに追加されるMBeanを定義するMLETタグを含むテキスト・ファイルをロードします。Set<Object>
getMBeansFromURL(URL url)
MBeanサーバーに追加されるMBeanを定義するMLETタグを含むテキスト・ファイルをロードします。URL[]
getURLs()
クラスおよびリソースをロードするためのURLの検索パスを返します。Class<?>
loadClass(String name, ClassLoaderRepository clr)
このMLetのURLでクラスが見つからない場合、指定されたClassLoaderRepository
を使ってクラスをロードします。void
postDeregister()
MBeanサーバーから登録解除したあと、m-letが必要なオペレーションを実行できるようにします。void
postRegister(Boolean registrationDone)
MBeanサーバーへの登録が成功または失敗したあと、m-letが必要なオペレーションを実行できるようにします。void
preDeregister()
MBeanサーバーから登録解除する前に、m-letが必要なオペレーションを実行できるようにします。ObjectName
preRegister(MBeanServer server, ObjectName name)
MBeanサーバーに登録される前に必要なオペレーションをm-letが実行することを許可します。void
readExternal(ObjectInput in)
特定のObjectInput
からこのMLetの内容を復元します。void
setLibraryDirectory(String libdir)
ネイティブ・ライブラリをメモリーにロードする前に格納するライブラリ・ローダーによって使用されるディレクトリを設定します。void
writeExternal(ObjectOutput out)
このMLetの内容を特定のObjectOutput
に保存します。クラス java.net.URLClassLoaderで宣言されたメソッド
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, newInstance, newInstance
クラス java.lang.ClassLoaderで宣言されたメソッド
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
コンストラクタの詳細
-
MLet
public MLet()委譲関係の親になっているデフォルトのClassLoaderを使って、新しいMLetを構築します。 -
MLet
public MLet(URL[] urls)委譲関係の親になっているデフォルトのClassLoaderを使って、指定されたURLの新しいMLetを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。
-
MLet
public MLet(URL[] urls, ClassLoader parent)指定されたURLの新しいMLetを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 parent引数は、委譲用の親クラス・ローダーとして使用されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。parent
- 委譲用の親クラス・ローダー。
-
MLet
public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryの新しいMLetを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいURLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。parent
- 委譲用の親クラス・ローダー。factory
- URLの作成時に使用するURLStreamHandlerFactory。
-
MLet
public MLet(URL[] urls, boolean delegateToCLR)委譲関係の親になっているデフォルトのClassLoaderを使って、指定されたURLの新しいMLetを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。delegateToCLR
- 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepository
へ処理を委譲する必要がある場合はtrue。
-
MLet
public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)指定されたURLの新しいMLetを構築します。 URLは、親クラス・ローダー内で検索されたあと、クラスおよびリソースに指定された順で検索されます。 parent引数は、委譲用の親クラス・ローダーとして使用されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。parent
- 委譲用の親クラス・ローダー。delegateToCLR
- 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepository
へ処理を委譲する必要がある場合はtrue。
-
MLet
public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)指定されたURL、親クラス・ローダー、およびURLStreamHandlerFactoryの新しいMLetを構築します。 parent引数は、委譲用の親クラス・ローダーとして使用されます。 factory引数は、新しいURLを作成するときにプロトコル・ハンドラを取得するためのストリーム・ハンドラ・ファクトリとして使用されます。- パラメータ:
urls
- クラスおよびリソースのロード元となるURL。parent
- 委譲用の親クラス・ローダー。factory
- URLの作成時に使用するURLStreamHandlerFactory。delegateToCLR
- 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepository
へ処理を委譲する必要がある場合はtrue。
-
-
メソッドの詳細
-
addURL
public void addURL(URL url)指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。- 定義:
addURL
、インタフェース:MLetMBean
- オーバーライド:
addURL
、クラス:URLClassLoader
- パラメータ:
url
- URLの検索パスに追加するURL
-
addURL
public void addURL(String url) throws ServiceNotFoundException指定されたURLを、クラスおよびリソースを検索するためのURLリストに追加します。- 定義:
addURL
、インタフェース:MLetMBean
- パラメータ:
url
- 追加するURL- 例外:
ServiceNotFoundException
- 異常な形式のURLが指定された場合。
-
getURLs
public URL[] getURLs()クラスおよびリソースをロードするためのURLの検索パスを返します。 これには、コンストラクタに指定されたURLの元のリストと、あとでaddURL()メソッドによって追加されたURLも含まれます。- 定義:
getURLs
、インタフェース:MLetMBean
- オーバーライド:
getURLs
、クラス:URLClassLoader
- 戻り値:
- クラスおよびリソースをロードするためのURLの検索パス。
-
getMBeansFromURL
public Set<Object> getMBeansFromURL(URL url) throws ServiceNotFoundExceptionMBeanサーバーに追加されるMBeanを定義するMLETタグを含むテキスト・ファイルをロードします。 このテキスト・ファイルの場所は、URLで指定されます。 MLETファイルに指定されたMBeanは、MBeanサーバーでインスタンス化され、登録されます。- 定義:
getMBeansFromURL
、インタフェース:MLetMBean
- パラメータ:
url
- ロードされるテキスト・ファイルのURLに相当するURLオブジェクト。- 戻り値:
- ロードされたm-letテキスト・ファイル内のMLETタグごとに1つのエントリを含むセット。 各エントリは、作成されたMBeanのObjectInstance指定する。または、MBeanを作成できなかった場合は、スロー可能なオブジェクト(エラーまたは例外)を指定する。
- 例外:
ServiceNotFoundException
- m-letテキスト・ファイルにMLETタグが含まれていない場合、m-letテキスト・ファイルが見つからない場合、MLETタグの必須属性が指定されていない場合、またはurlの値がnullである場合。IllegalStateException
- MLet MBeanがMBeanServerに登録されていない場合。
-
getMBeansFromURL
public Set<Object> getMBeansFromURL(String url) throws ServiceNotFoundExceptionMBeanサーバーに追加されるMBeanを定義するMLETタグを含むテキスト・ファイルをロードします。 このテキスト・ファイルの場所は、URLで指定されます。 MLETファイルに指定されたMBeanは、MBeanサーバーでインスタンス化され、登録されます。- 定義:
getMBeansFromURL
、インタフェース:MLetMBean
- パラメータ:
url
- ロードされるテキスト・ファイルのURLに相当するStringオブジェクト。- 戻り値:
- ロードされたm-letテキスト・ファイル内のMLETタグごとに1つのエントリを含むセット。 各エントリは、作成されたMBeanのObjectInstance指定する。または、MBeanを作成できなかった場合は、スロー可能なオブジェクト(エラーまたは例外)を指定する。
- 例外:
ServiceNotFoundException
- 次のエラーのいずれかが発生しました。m-letテキスト・ファイルにMLETタグが含まれていない場合、m-letテキスト・ファイルが見つからない場合、MLETタグの必須属性が指定されていない場合、またはurlの形式が異常である場合。IllegalStateException
- MLet MBeanがMBeanServerに登録されていない場合。
-
getLibraryDirectory
public String getLibraryDirectory()ネイティブ・ライブラリをメモリーにロードする前に格納するライブラリ・ローダーによって現在使用されているディレクトリを取得します。- 定義:
getLibraryDirectory
、インタフェース:MLetMBean
- 戻り値:
- ライブラリ・ローダーによって現在使用されているディレクトリ。
- 例外:
UnsupportedOperationException
- この実装がネイティブ・ライブラリのこの格納方法をサポートしない場合。- 関連項目:
setLibraryDirectory(java.lang.String)
-
setLibraryDirectory
public void setLibraryDirectory(String libdir)ネイティブ・ライブラリをメモリーにロードする前に格納するライブラリ・ローダーによって使用されるディレクトリを設定します。- 定義:
setLibraryDirectory
、インタフェース:MLetMBean
- パラメータ:
libdir
- ライブラリ・ローダーによって使用されるディレクトリ。- 例外:
UnsupportedOperationException
- この実装がネイティブ・ライブラリのこの格納方法をサポートしない場合。- 関連項目:
getLibraryDirectory()
-
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws ExceptionMBeanサーバーに登録される前に必要なオペレーションをm-letが実行することを許可します。 ObjectNameがnullの場合、m-letはデフォルトの名前<defaultDomain:type=MLet>を使って登録されます。- 定義:
preRegister
、インタフェース:MBeanRegistration
- パラメータ:
server
- MBeanサーバー。m-letはここに登録される。name
- m-letのオブジェクト名。- 戻り値:
- 登録されたm-letの名前。
- 例外:
Exception
- この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。
-
postRegister
public void postRegister(Boolean registrationDone)MBeanサーバーへの登録が成功または失敗したあと、m-letが必要なオペレーションを実行できるようにします。- 定義:
postRegister
、インタフェース:MBeanRegistration
- パラメータ:
registrationDone
- m-letがMBeanサーバーに正常に登録されたかどうかを示す。 登録に失敗した場合の値はfalse。
-
preDeregister
public void preDeregister() throws ExceptionMBeanサーバーから登録解除する前に、m-letが必要なオペレーションを実行できるようにします。- 定義:
preDeregister
、インタフェース:MBeanRegistration
- 例外:
Exception
- この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。
-
postDeregister
public void postDeregister()MBeanサーバーから登録解除したあと、m-letが必要なオペレーションを実行できるようにします。- 定義:
postDeregister
、インタフェース:MBeanRegistration
-
writeExternal
public void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationExceptionこのMLetの内容を特定の
ObjectOutput
に保存します。 このメソッドは、すべての実装でサポートされるわけではありません。 そうでないものはUnsupportedOperationException
をスローします。 このメソッドをサポートする場合、またはデータの書込み形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。書き込まれるデータの形式は指定されていませんが、実装が
writeExternal(java.io.ObjectOutput)
をサポートする場合、それはreadExternal(java.io.ObjectInput)
も、前者によって書き込まれた内容を後者が読み取れるような方法でサポートする必要があります。- 定義:
writeExternal
、インタフェース:Externalizable
- パラメータ:
out
- 書込み先のオブジェクト出力ストリーム。- 例外:
IOException
- 書込み中に問題が発生した場合。UnsupportedOperationException
- この実装がこの操作をサポートしていない場合。
-
readExternal
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException, UnsupportedOperationException特定の
ObjectInput
からこのMLetの内容を復元します。 このメソッドは、すべての実装でサポートされるわけではありません。 そうでないものはUnsupportedOperationException
をスローします。 このメソッドをサポートする場合、またはデータの読取り形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。読み取られるデータの形式は指定されていませんが、実装が
readExternal(java.io.ObjectInput)
をサポートする場合、それはwriteExternal(java.io.ObjectOutput)
も、後者によって書き込まれた内容を前者が読み取れる方法でサポートする必要があります。- 定義:
readExternal
、インタフェース:Externalizable
- パラメータ:
in
- 読込み元のオブジェクト入力ストリーム。- 例外:
IOException
- 読取り中に問題が発生した場合。ClassNotFoundException
- 復元されているオブジェクトのクラスが見つからない場合。UnsupportedOperationException
- この実装がこの操作をサポートしていない場合。
-
loadClass
public Class<?> loadClass(String name, ClassLoaderRepository clr) throws ClassNotFoundExceptionこのMLetのURLでクラスが見つからない場合、指定された
ClassLoaderRepository
を使ってクラスをロードします。 ClassLoaderRepositoryがnullの場合、このMLetのURL内にクラスが見つからないと、ただちにClassNotFoundException
がスローされます。- パラメータ:
name
- ロード対象クラスの名前。clr
- このClassLoader内に指定のクラスが見つからない場合に使用されるClassLoaderRepository。 nullも可。- 戻り値:
- 結果として得られるClassオブジェクト。
- 例外:
ClassNotFoundException
- このClassLoader内にも指定のClassLoaderRepository内にも指定のクラスが見つからない場合。
-
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException再定義予定のクラス・ローダーのmainメソッドです。- オーバーライド:
findClass
、クラス:URLClassLoader
- パラメータ:
name
- クラスの名前。- 戻り値:
- 結果として得られるClassオブジェクト。
- 例外:
ClassNotFoundException
- 指定されたクラスが見つからない場合。
-
findLibrary
ネイティブ・ライブラリの絶対パス名を返します。 VMは、このメソッドを呼び出して、このクラス・ローダーによってロードされたクラスのネイティブ・ライブラリを検索します。 最初は、ネイティブ・ライブラリ名のみを使って、JARファイル内が検索されます。ネイティブ・ライブラリ名が見つからない場合は、ネイティブ・ライブラリ名とアーキテクチャ固有のパス名(OSName/OSArch/OSVersion/lib/nativelibname
)で検索が行われます。JARファイル内でSolaris SPARC 5.7のライブラリのステータスを検索するとき:
- libstat.so
- SunOS/sparc/5.7/lib/libstat.so
- stat.dll
- WindowsNT/x86/4.0/lib/stat.dll
具体的には、
nativelibname
をSystem.mapLibraryName
(libname)
の結果にします。 その後、JARファイル内で次の名前が次の順番で検索されます。nativelibname
<os.name>/<os.arch>/<os.version>/lib/
nativelibname
ここで、<X>
は、System.getProperty(X)
から含まれる空白を削除したもので、/
はファイル区切り文字(File.separator
)を表します。このメソッドの戻り値が
null
(このクラス・ローダーでロードされたJARファイル内にライブラリが見つからない)の場合、VMは、java.library.path
プロパティとして指定されたパスを付加してライブラリを検索します。- オーバーライド:
findLibrary
、クラス:ClassLoader
- パラメータ:
libname
- ライブラリ名。- 戻り値:
- ネイティブ・ライブラリの絶対パス。
- 関連項目:
System.loadLibrary(String)
,System.mapLibraryName(String)
-
check
protected URL check(String version, URL codebase, String jarfile, MLetContent mlet) throws Exceptionこのメソッドは、キャッシュ機能とバージョン管理機能をサポートするためにこのサービスを拡張するときオーバーライドされます。 MLetファイルからバージョン、コード・ベース、およびjarファイルが抽出されると
getMBeansFromURL
から呼び出され、指定のMBeanをロードしても問題がないかを確認したり、指定のURLを別のURLで置き換えるために使用されます。このメソッドのデフォルト実装は、未変更の
codebase
を返します。- パラメータ:
version
- ローカルに格納された.jar
ファイルのバージョン番号。codebase
- リモート.jar
ファイルのベースURL。jarfile
- ロードされる.jar
ファイルの名前。mlet
-MLET
タグを示すMLetContent
インスタンス。- 戻り値:
- ロードされたMBeanによって使用されるコード・ベース。 戻り値はnull以外。
- 例外:
Exception
- 何らかの原因でMBeanがロードされなかった場合。 この例外は、getMBeansFromURL
によって返されたセットに追加される。
-