モジュール java.management
パッケージ javax.management.loading

クラスMLet

すべての実装されたインタフェース:
Closeable, Externalizable, Serializable, AutoCloseable, 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 = クラス
取得する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が二重引用符で囲まれていること。
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=>
以下にそれぞれの意味を示します。
  • 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テキスト・ファイルをロードすると、ファイルに指定された各MBeanのインスタンスが作成され、登録されます。

m-letサービスは、java.net.URLClassLoaderを拡張します。このサービスを使って、エージェントのVM内のリモート・クラスおよびjarファイルをロードできます。

ノート - MLetクラス・ローダーは、MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer)を使って、ロードされたjarファイル内に見つからないクラスをロードします。

導入されたバージョン:
1.5
関連項目:
  • コンストラクタの詳細

    • 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 ServiceNotFoundException
      MBeanサーバーに追加される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 ServiceNotFoundException
      MBeanサーバーに追加される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

      public void setLibraryDirectory(String libdir)
      ネイティブ・ライブラリをメモリーにロードする前に格納するライブラリ・ローダーによって使用されるディレクトリを設定します。
      定義:
      setLibraryDirectory、インタフェース: MLetMBean
      パラメータ:
      libdir - ライブラリ・ローダーによって使用されるディレクトリ。
      例外:
      UnsupportedOperationException - この実装がネイティブ・ライブラリのこの格納方法をサポートしない場合。
      関連項目:
    • preRegister

      public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
      MBeanサーバーに登録される前に必要なオペレーションを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 Exception
      MBeanサーバーから登録解除する前に、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

      特定の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

      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プロパティとして指定されたパスを付加してライブラリを検索します。

      オーバーライド:
      findLibrary、クラス: ClassLoader
      パラメータ:
      libname - ライブラリ名。
      戻り値:
      ネイティブ・ライブラリの絶対パス。
      関連項目:
    • 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によって返されたセットに追加される。