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
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, 2014, Oracle and/or its affiliates. All rights reserved.