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, newInstance
defineClass, defineClass
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getResource, getResourceAsStream, getResources
public 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
、インタフェース: MLetMBean
addURL
、クラス: URLClassLoader
url
- URL の検索パスに追加する URLpublic void addURL(String url) throws ServiceNotFoundException
addURL
、インタフェース: MLetMBean
url
- 追加する URLServiceNotFoundException
- 異常な形式の URL が指定された場合。public URL[] getURLs()
getURLs
、インタフェース: MLetMBean
getURLs
、クラス: URLClassLoader
public Set<Object> getMBeansFromURL(URL url) throws ServiceNotFoundException
getMBeansFromURL
、インタフェース: MLetMBean
url
- ロードされるテキストファイルの URL に相当する URL オブジェクト。ServiceNotFoundException
- m-let テキストファイルに MLET タグが含まれていない場合、m-let テキストファイルが見つからない場合、MLET タグの必須属性が指定されていない場合、または url の値が null である場合。IllegalStateException
- MLet MBean が MBeanServer に登録されていない場合。public Set<Object> getMBeansFromURL(String url) throws ServiceNotFoundException
getMBeansFromURL
、インタフェース: MLetMBean
url
- ロードされるテキストファイルの URL に相当する String オブジェクト。ServiceNotFoundException
- 次のエラーのいずれかが発生しました。m-let テキストファイルに MLET タグが含まれていない場合、m-let テキストファイルが見つからない場合、MLET タグの必須属性が指定されていない場合、または url の形式が異常である場合。IllegalStateException
- MLet MBean が MBeanServer に登録されていない場合。public String getLibraryDirectory()
getLibraryDirectory
、インタフェース: MLetMBean
UnsupportedOperationException
- この実装がネイティブライブラリのこの格納方法をサポートしない場合。setLibraryDirectory(java.lang.String)
public void setLibraryDirectory(String libdir)
setLibraryDirectory
、インタフェース: MLetMBean
libdir
- ライブラリローダーによって使用されるディレクトリ。UnsupportedOperationException
- この実装がネイティブライブラリのこの格納方法をサポートしない場合。getLibraryDirectory()
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
preRegister
、インタフェース: MBeanRegistration
server
- MBean サーバー。m-let はここに登録される。name
- m-let のオブジェクト名。Exception
- この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException として再スローされる。public void postRegister(Boolean registrationDone)
postRegister
、インタフェース: MBeanRegistration
registrationDone
- m-let が MBean サーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値は false。public void preDeregister() throws Exception
preDeregister
、インタフェース: MBeanRegistration
java.langException
- この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException として再スローされる。Exception
- この例外は、MBean サーバーにキャッチされ、MBeanRegistrationException
として再スローされる。public void postDeregister()
postDeregister
、インタフェース: MBeanRegistration
public void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationException
この MLet の内容を特定の ObjectOutput
に保存します。このメソッドは、すべての実装でサポートされるわけではありません。そうでないものは UnsupportedOperationException
をスローします。このメソッドをサポートする場合、またはデータの書き込み形式を変更する場合は、サブクラスでこのメソッドをオーバーライドします。
書き込まれるデータの形式は指定されていませんが、実装が writeExternal(java.io.ObjectOutput)
をサポートする場合、それは readExternal(java.io.ObjectInput)
も、前者によって書き込まれた内容を後者が読み取れるような方法でサポートする必要があります。
writeExternal
、インタフェース: Externalizable
out
- 書き込み先のオブジェクト出力ストリーム。IOException
- 書き込み中に問題が発生した場合。UnsupportedOperationException
- この実装がこの操作をサポートしていない場合。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
- この実装がこの操作をサポートしていない場合。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
、クラス: URLClassLoader
name
- クラスの名前。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
、クラス: ClassLoader
libname
- ライブラリ名。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.