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、インタフェース: MBeanRegistrationjava.langException - この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException として再スローされる。Exception - この例外は、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, 2013, Oracle and/or its affiliates. All rights reserved.