JavaTM Platform
Standard Ed. 6

javax.management.loading
クラス MLet

java.lang.Object
  上位を拡張 java.lang.ClassLoader
      上位を拡張 java.security.SecureClassLoader
          上位を拡張 java.net.URLClassLoader
              上位を拡張 javax.management.loading.MLet
すべての実装されたインタフェース:
Externalizable, Serializable, MLetMBean, MBeanRegistration
直系の既知のサブクラス:
PrivateMLet

public class MLet
extends URLClassLoader
implements MLetMBean, MBeanRegistration, Externalizable

リモート URL から着信した MBean サーバー内の MBean (複数可) をインスタンス化し、登録することができます。m-let は管理アプレットのショートカットです。m-let サービスは、取得する MBean の情報を指定する m-let テキストファイルをロードすることにより、MBean の処理を行います。各 MBean の情報は、単一のタグインスタンス (MLET タグ) で指定します。m-let テキストファイルの位置は URL で指定します。  

MLET タグの構文は次のとおりです。  

<MLET
CODE = class | OBJECT = serfile
ARCHIVE = "archiveList"
[CODEBASE = codebaseURL]
[NAME = mbeanname]
[VERSION = version]
>
[arglist]
</MLET>  

次にそれぞれの意味を示します。

CODE = class
取得する MBean のパッケージ名を含む完全 Java クラス名を指定する属性です。ARCHIVE 属性で指定された .jar ファイルのうちいずれかに、MBean のコンパイル済み .class ファイルが含まれている必要があります。CODEOBJECT のいずれかが存在している必要があります。
OBJECT = serfile
取得する MBean の直列化表現を含む .ser ファイルを指定する属性です。このファイルは、ARCHIVE 属性で指定された .jar ファイルのうちいずれかに含まれている必要があります。.jar ファイルにディレクトリ階層が含まれる場合は、この階層内のファイルパスを指定します。そうしないと、一致は見つかりません。CODEOBJECT のいずれかが存在している必要があります。
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 の先頭がコロン文字 (:) である場合、オブジェクト名のドメイン部分は MBeanServer.getDefaultDomain() によって返される MBean サーバーのデフォルトドメインになります。
VERSION = version
取得する MBean と関連 .jar ファイルのバージョン番号を指定するオプション属性です。バージョン番号を使用すると、m-let テキストファイルの次回ロード時に、サーバーから .jar ファイルをロードして、キャッシュ内にローカルに格納されているファイルを更新することができます。 version には、0 以上の複数の 10 進整数をピリオドで区切って指定します。
arglist
インスタンス化する MBean のパラメータ (複数可) のリストを指定するオプション属性です。リストに含まれるのは、MBean のコンストラクタに渡されるパラメータです。arglist 内の各項目は、次の構文を使って指定します。

<ARG TYPE=argumentType VALUE=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 テキストファイルをロードすると、ファイルに指定された各 MBean のインスタンスが作成され、登録されます。  

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 から継承されたメソッド
definePackage, findResource, findResources, getPermissions, newInstance, newInstance
 
クラス java.security.SecureClassLoader から継承されたメソッド
defineClass, defineClass
 
クラス java.lang.ClassLoader から継承されたメソッド
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース javax.management.loading.MLetMBean から継承されたメソッド
getResource, getResourceAsStream, getResources
 

コンストラクタの詳細

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 リストに追加します。

定義:
インタフェース MLetMBean 内の addURL
オーバーライド:
クラス URLClassLoader 内の addURL
パラメータ:
url - URL の検索パスに追加する URL

addURL

public void addURL(String url)
            throws ServiceNotFoundException
指定された URL を、クラスおよびリソースを検索するための URL リストに追加します。

定義:
インタフェース MLetMBean 内の addURL
パラメータ:
url - 追加する URL
例外:
ServiceNotFoundException - 異常な形式の URL が指定された場合

getURLs

public URL[] getURLs()
クラスおよびリソースをロードするための URL の検索パスを返します。これには、コンストラクタに指定された URL の元のリストと、あとで addURL() メソッドによって追加された URL も含まれます。

定義:
インタフェース MLetMBean 内の getURLs
オーバーライド:
クラス URLClassLoader 内の getURLs
戻り値:
クラスおよびリソースをロードするための URL の検索パス

getMBeansFromURL

public Set<Object> getMBeansFromURL(URL url)
                             throws ServiceNotFoundException
MBean サーバーに追加される予定の MBean を定義する MLET タグを含むテキストファイルをロードします。このテキストファイルの場所は、URL で指定されます。MLET ファイルに指定された MBean は、MBean サーバーでインスタンス化され、登録されます。

定義:
インタフェース MLetMBean 内の getMBeansFromURL
パラメータ:
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 ServiceNotFoundException
MBean サーバーに追加される予定の MBean を定義する MLET タグを含むテキストファイルをロードします。このテキストファイルの場所は、URL で指定されます。MLET ファイルに指定された MBean は、MBean サーバーでインスタンス化され、登録されます。

定義:
インタフェース MLetMBean 内の getMBeansFromURL
パラメータ:
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()
ネイティブライブラリをメモリーにロードする前に格納するライブラリローダーによって現在使用されているディレクトリを取得します。

定義:
インタフェース MLetMBean 内の getLibraryDirectory
戻り値:
ライブラリローダーによって現在使用されているディレクトリ
例外:
UnsupportedOperationException - この実装がネイティブライブラリのこの格納方法をサポートしない場合
関連項目:
setLibraryDirectory(java.lang.String)

setLibraryDirectory

public void setLibraryDirectory(String libdir)
ネイティブライブラリをメモリーにロードする前に格納するライブラリローダーによって使用されるディレクトリを設定します。

定義:
インタフェース MLetMBean 内の setLibraryDirectory
パラメータ:
libdir - ライブラリローダーによって使用されるディレクトリ
例外:
UnsupportedOperationException - この実装がネイティブライブラリのこの格納方法をサポートしない場合
関連項目:
getLibraryDirectory()

preRegister

public ObjectName preRegister(MBeanServer server,
                              ObjectName name)
                       throws Exception
MBean サーバーに登録される前に、m-let が必要なオペレーションを実行できるようにします。ObjectName が null の場合、m-let はデフォルトの名前 <defaultDomain>:type=MLet を使って登録されます。

定義:
インタフェース MBeanRegistration 内の preRegister
パラメータ:
server - MBean サーバー。m-let はここに登録される
name - m-let のオブジェクト名
戻り値:
登録された m-let の名前
例外:
Exception - この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException として再スローされる

postRegister

public void postRegister(Boolean registrationDone)
MBean サーバーへの登録が成功または失敗したあと、m-let が必要なオペレーションを実行できるようにします。

定義:
インタフェース MBeanRegistration 内の postRegister
パラメータ:
registrationDone - m-let が MBean サーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値は false

preDeregister

public void preDeregister()
                   throws Exception
MBean サーバーから登録解除する前に、m-let が必要なオペレーションを実行できるようにします。

定義:
インタフェース MBeanRegistration 内の preDeregister
例外:
java.langException - この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException として再スローされる
Exception - この例外は、MBean サーバーにキャッチされ、 MBeanRegistrationException として再スローされる

postDeregister

public void postDeregister()
MBean サーバーから登録解除したあと、m-let が必要なオペレーションを実行できるようにします。

定義:
インタフェース MBeanRegistration 内の postDeregister

writeExternal

public void writeExternal(ObjectOutput out)
                   throws IOException,
                          UnsupportedOperationException

この MLet の内容を、指定された ObjectOutput に保存します。このメソッドは、すべての実装でサポートされるわけではありません。このメソッドをサポートしない実装は、UnsupportedOperationException をスローします。このメソッドをサポートする場合、またはデータの書き込み形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。

データの書き込み形式は未指定ですが、writeExternal(java.io.ObjectOutput) をサポートする実装は、readExternal(java.io.ObjectInput) もサポートする必要があります。つまり、writeExternal(java.io.ObjectOutput) に書き込まれたデータを readExternal(java.io.ObjectInput) で読み取ることができなければなりません。

定義:
インタフェース Externalizable 内の writeExternal
パラメータ:
out - 書き込み先のオブジェクト出力ストリーム
例外:
IOException - 書き込み中に問題が発生した場合
UnsupportedOperationException - この実装がこのオペレーションをサポートしない場合

readExternal

public void readExternal(ObjectInput in)
                  throws IOException,
                         ClassNotFoundException,
                         UnsupportedOperationException

指定された ObjectInput から、この MLet の内容を復元します。このメソッドは、すべての実装でサポートされるわけではありません。このメソッドをサポートしない実装は、UnsupportedOperationException をスローします。このメソッドをサポートする場合、またはデータの読み取り形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。

データの読み取り形式は未指定ですが、readExternal(java.io.ObjectInput) をサポートする実装は、writeExternal(java.io.ObjectOutput) もサポートする必要があります。つまり、writeExternal(java.io.ObjectOutput) に書き込まれたデータを readExternal(java.io.ObjectInput) で読み取ることができなければなりません。

定義:
インタフェース Externalizable 内の readExternal
パラメータ:
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 メソッドです。

オーバーライド:
クラス URLClassLoader 内の findClass
パラメータ:
name - クラスの名前
戻り値:
結果として得られる Class オブジェクト
例外:
ClassNotFoundException - 指定されたクラスが見つからない場合

findLibrary

protected String findLibrary(String libname)
ネイティブライブラリの絶対パス名を帰します。VM は、このメソッドを呼び出して、このクラスローダーによってロードされたクラスのネイティブライブラリを検索します。最初は、ネイティブライブラリ名だけを使って、JAR ファイル内が検索されます。ネイティブライブラリ名が見つからない場合は、ネイティブライブラリ名とアーキテクチャー固有のパス名 (OSName/OSArch/OSVersion/lib/nativelibname) で検索が行われます。

JAR ファイル内で Solaris SPARC 5.7 のライブラリのステータスを検索するとき:

  1. libstat.so
  2. SunOS/sparc/5.7/lib/libstat.so
JAR ファイル内で Windows NT 4.0 のライブラリのステータスを検索するとき:
  1. stat.dll
  2. WindowsNT/x86/4.0/lib/stat.dll

具体的には、nativelibnameSystem.mapLibraryName(libname) の結果にします。その後、JAR ファイル内で次の名前が次の順番で検索されます。
nativelibname
<os.name>/<os.arch>/<os.version>/lib/nativelibname
ここで、<X> は、System.getProperty(X) から含まれる空白を削除したもので、/ はファイル区切り文字 (File.separator) を表します。  

このメソッドの戻り値が null (このクラスローダーでロードされた JAR ファイル内にライブラリが見つからない) の場合、VM は、java.library.path プロパティーとして指定されたパスを付加してライブラリを検索します。

オーバーライド:
クラス ClassLoader 内の findLibrary
パラメータ:
libname - ライブラリ名
戻り値:
ネイティブライブラリの絶対パス
関連項目:
System.loadLibrary(String), System.mapLibraryName(String)

check

protected URL check(String version,
                    URL codebase,
                    String jarfile,
                    MLetContent mlet)
             throws Exception

このメソッドは、キャッシュ機能とバージョン管理機能をサポートするためにこのサービスを拡張するときオーバーライドされます。MLet ファイルからバージョン、コードベース、および jar ファイルが抽出されると呼び出され、指定の MBean をロードしても問題がないかを確認したり、指定の URL を別の URL で置き換えるために使用されます。

このメソッドのデフォルト実装は、未変更のcodebase を返します。

パラメータ:
version - ローカルに格納された .jar ファイルのバージョン番号
codebase - リモート .jar ファイルのベース URL
jarfile - ロードされる .jar ファイルの名前
mlet - MLET タグを示す MLetContent インスタンス
戻り値:
ロードされた MBean によって使用されるコードベース。戻り値は null 以外
例外:
Exception - 何らかの原因で MBean がロードされなかった場合。この例外は、getMBeansFromURL によって返されたセットに追加される

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。