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 = クラスARCHIVE属性で指定された.jarファイルのうちいずれかに、MBeanのコンパイル済み.classファイルが含まれている必要があります。CODEかOBJECTのいずれかが存在している必要があります。
OBJECT = serfile.serファイルを指定する属性です。このファイルは、ARCHIVE属性で指定された.jarファイルのうちいずれかに含まれている必要があります。.jarファイルにディレクトリ階層が含まれる場合は、この階層内のファイル・パスを指定します。そうしないと、一致は見つかりません。CODEかOBJECTのいずれかが存在している必要があります。
ARCHIVE = "archiveList".jarファイルを指定する必須属性です。.jarファイルのうちいずれかに、CODEまたはOBJECT属性で指定されたファイルが含まれている必要があります。アーカイブ・リストに複数のファイルが含まれる場合、次の条件が必要になります。
.jarファイルが、コード・ベースURLで指定されたディレクトリに格納されている必要があります。
CODEBASE = codebaseURLARCHIVE属性で指定された.jarファイルを含むディレクトリを識別します。この属性を指定するのは、.jarファイルがm-letテキスト・ファイルと同じディレクトリにない場合のみです。この属性が指定されていない場合、m-letテキスト・ファイルのベースURLが使用されます。
NAME = mbeannameMBeanServer.getDefaultDomain()によって返されるMBeanサーバーのデフォルト・ドメインになります。
VERSION = version.jarファイルのバージョン番号を指定するオプション属性です。バージョン番号を使用すると、m-letテキスト・ファイルの次回ロード時に、サーバーから.jarファイルをロードして、キャッシュ内にローカルに格納されているファイルを更新することができます。versionには、0以上の複数の10進整数をピリオドで区切って指定します。
ARG TYPE=argumentType VALUE=値>引数リスト内に指定する引数の型は、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ファイル内に見つからないクラスをロードします。
| コンストラクタと説明 |
|---|
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に保存します。 |
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, newInstance, newInstancedefineClass, defineClassclearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignersclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetResource, getResourceAsStream, getResourcespublic MLet()
public MLet(URL[] urls)
urls - クラスおよびリソースのロード元となるURL。public MLet(URL[] urls, ClassLoader parent)
urls - クラスおよびリソースのロード元となるURL。parent - 委譲用の親クラス・ローダー。public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
urls - クラスおよびリソースのロード元となるURL。parent - 委譲用の親クラス・ローダー。factory - URLの作成時に使用するURLStreamHandlerFactory。public MLet(URL[] urls, boolean delegateToCLR)
urls - クラスおよびリソースのロード元となるURL。delegateToCLR - 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepositoryへ処理を委譲する必要がある場合はtrue。public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
urls - クラスおよびリソースのロード元となるURL。parent - 委譲用の親クラス・ローダー。delegateToCLR - 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepositoryへ処理を委譲する必要がある場合はtrue。public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
urls - クラスおよびリソースのロード元となるURL。parent - 委譲用の親クラス・ローダー。factory - URLの作成時に使用するURLStreamHandlerFactory。delegateToCLR - 親ClassLoaderでもURLでもクラスが見つからず、MLetがMBeanServerのClassLoaderRepositoryへ処理を委譲する必要がある場合はtrue。public void addURL(URL url)
addURL、インタフェース: MLetMBeanaddURL、クラス: URLClassLoaderurl - URLの検索パスに追加するURLpublic void addURL(String url) throws ServiceNotFoundException
addURL、インタフェース: MLetMBeanurl - 追加するURLServiceNotFoundException - 異常な形式のURLが指定された場合。public URL[] getURLs()
getURLs、インタフェース: MLetMBeangetURLs、クラス: URLClassLoaderpublic Set<Object> getMBeansFromURL(URL url) throws ServiceNotFoundException
getMBeansFromURL、インタフェース: MLetMBeanurl - ロードされるテキスト・ファイルのURLに相当するURLオブジェクト。ServiceNotFoundException - m-letテキスト・ファイルにMLETタグが含まれていない場合、m-letテキスト・ファイルが見つからない場合、MLETタグの必須属性が指定されていない場合、またはurlの値がnullである場合。IllegalStateException - MLet MBeanがMBeanServerに登録されていない場合。public Set<Object> getMBeansFromURL(String url) throws ServiceNotFoundException
getMBeansFromURL、インタフェース: MLetMBeanurl - ロードされるテキスト・ファイルのURLに相当するStringオブジェクト。ServiceNotFoundException - 次のエラーのいずれかが発生しました。m-letテキスト・ファイルにMLETタグが含まれていない場合、m-letテキスト・ファイルが見つからない場合、MLETタグの必須属性が指定されていない場合、またはurlの形式が異常である場合。IllegalStateException - MLet MBeanがMBeanServerに登録されていない場合。public String getLibraryDirectory()
getLibraryDirectory、インタフェース: MLetMBeanUnsupportedOperationException - この実装がネイティブ・ライブラリのこの格納方法をサポートしない場合。setLibraryDirectory(java.lang.String)public void setLibraryDirectory(String libdir)
setLibraryDirectory、インタフェース: MLetMBeanlibdir - ライブラリ・ローダーによって使用されるディレクトリ。UnsupportedOperationException - この実装がネイティブ・ライブラリのこの格納方法をサポートしない場合。getLibraryDirectory()public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
preRegister、インタフェース: MBeanRegistrationserver - MBeanサーバー。m-letはここに登録される。name - m-letのオブジェクト名。Exception - この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。public void postRegister(Boolean registrationDone)
postRegister、インタフェース: MBeanRegistrationregistrationDone - m-letがMBeanサーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値はfalse。public void preDeregister()
throws Exception
preDeregister、インタフェース: MBeanRegistrationException - この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationExceptionとして再スローされる。public void postDeregister()
postDeregister、インタフェース: MBeanRegistrationpublic void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationException
このMLetの内容を特定のObjectOutputに保存します。このメソッドは、すべての実装でサポートされるわけではありません。そうでないものはUnsupportedOperationExceptionをスローします。このメソッドをサポートする場合、またはデータの書込み形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。
書き込まれるデータの形式は指定されていませんが、実装がwriteExternal(java.io.ObjectOutput)をサポートする場合、それはreadExternal(java.io.ObjectInput)も、前者によって書き込まれた内容を後者が読み取れるような方法でサポートする必要があります。
writeExternal、インタフェース: Externalizableout - 書込み先のオブジェクト出力ストリーム。IOException - 書込み中に問題が発生した場合。UnsupportedOperationException - この実装がこの操作をサポートしていない場合。public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException, UnsupportedOperationException
特定のObjectInputからこのMLetの内容を復元します。このメソッドは、すべての実装でサポートされるわけではありません。そうでないものはUnsupportedOperationExceptionをスローします。このメソッドをサポートする場合、またはデータの読取り形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。
読み取られるデータの形式は指定されていませんが、実装がreadExternal(java.io.ObjectInput)をサポートする場合、それはwriteExternal(java.io.ObjectOutput)も、後者によって書き込まれた内容を前者が読み取れる方法でサポートする必要があります。
readExternal、インタフェース: Externalizablein - 読込み元のオブジェクト入力ストリーム。IOException - 読取り中に問題が発生した場合。ClassNotFoundException - 復元されているオブジェクトのクラスが見つからない場合。UnsupportedOperationException - この実装がこの操作をサポートしていない場合。public Class<?> loadClass(String name, ClassLoaderRepository clr) throws ClassNotFoundException
このMLetのURLでクラスが見つからない場合、指定されたClassLoaderRepositoryを使ってクラスをロードします。ClassLoaderRepositoryがnullの場合、このMLetのURL内にクラスが見つからないと、ただちにClassNotFoundExceptionがスローされます。
name - ロード対象クラスの名前。clr - このClassLoader内に指定のクラスが見つからない場合に使用されるClassLoaderRepository。nullも可。ClassNotFoundException - このClassLoader内にも指定のClassLoaderRepository内にも指定のクラスが見つからない場合。protected Class<?> findClass(String name) throws ClassNotFoundException
findClass、クラス: URLClassLoadername - クラスの名前。ClassNotFoundException - 指定されたクラスが見つからない場合。protected String findLibrary(String libname)
OSName/OSArch/OSVersion/lib/nativelibname)で検索が行われます。
JARファイル内でSolaris SPARC 5.7のライブラリのステータスを検索するとき:
具体的には、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、クラス: ClassLoaderlibname - ライブラリ名。System.loadLibrary(String), System.mapLibraryName(String)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インスタンス。Exception - 何らかの原因でMBeanがロードされなかった場合。この例外は、getMBeansFromURLによって返されたセットに追加される。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.