- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- 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是管理applet的捷径。 m-let服务通过加载m-let文本文件来完成此操作,该文件指定有关要获取的MBean的信息。 每个MBean的信息都在一个标记实例中指定,称为MLET标记。 m-let文本文件的位置由URL指定。MLET
标记具有以下语法:<
MLET
CODE =
class| OBJECT =
serfile
ARCHIVE = "
archiveList"
[CODEBASE =
codebaseURL]
[NAME =
mbeanname]
[VERSION =
版本]
>
[
arglist]
</MLET
>哪里:
-
CODE =
类 -
此属性指定要获取的MBean的完整Java类名称,包括包名称。
MBean的已编译
.class
文件必须包含在ARCHIVE
属性指定的.jar
文件之一中。 必须存在CODE
或OBJECT
。 -
OBJECT =
serfile -
此属性指定包含要获取的MBean的序列化表示的
.ser
文件。 此文件必须包含在ARCHIVE
属性指定的.jar
文件之一中。 如果.jar
文件包含目录层次结构,请指定此层次结构中文件的路径。 否则将找不到匹配项。 必须存在CODE
或OBJECT
。 -
ARCHIVE = "
archiveList"
-
此强制属性指定一个或多个
.jar
文件,其中包含要获取的MBean使用的MBean或其他资源。 其中一个.jar
文件必须包含由CODE
或OBJECT
属性指定的文件。 如果archivelist包含多个文件:- 必须用逗号(,)将每个文件与后面的文件分开。
- archivelist必须用双引号括起来。
.jar
文件都必须存储在代码库URL指定的目录中。 -
CODEBASE =
codebaseURL -
此可选属性指定要获取的MBean的代码库URL。
它标识包含
ARCHIVE
属性指定的.jar
文件的目录。 仅当.jar
文件与m-let文本文件不在同一目录中时,才指定此属性。 如果未指定此属性,则使用m-let文本文件的基本URL。 -
NAME =
mbeanname -
此可选属性指定m-let服务注册时要分配给MBean实例的对象名称。
如果mbeanname以冒号(:)开头,则对象名的域部分是MBean服务器的默认域,由
MBeanServerConnection.getDefaultDomain()
返回。 -
VERSION =
版本 -
此可选属性指定要获取的MBean的版本号和关联的
.jar
文件。 此版本号可用于指定从服务器加载.jar
文件,以便在.jar
加载m-let文本文件时更新缓存中本地存储的文件。 version必须是一系列非负十进制整数,每个整数之间用一个句点隔开一个句点。 - arglist中
-
此可选属性指定要实例化的MBean的一个或多个参数的列表。
此列表描述了要传递MBean的构造函数的参数。
使用以下语法指定arglist中的每个项目:
-
<
ARG TYPE=
argumentTypeVALUE=
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服务扩展了
java.net.URLClassLoader
,可用于在代理的VM中加载远程类和jar文件。注 -
MLet
类加载器使用MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer)
加载在加载的jar文件中找不到的类。- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 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 类<?>
findClass(String name)
这是正在重新定义的类加载器的主要方法。protected String
findLibrary(String libname)
返回本机库的绝对路径名。String
getLibraryDirectory()
获取库加载器用于在将本机库加载到内存之前存储的当前目录。Set<Object>
getMBeansFromURL(String url)
加载包含MLET标记的文本文件,这些标记定义要添加到MBean服务器的MBean。Set<Object>
getMBeansFromURL(URL url)
加载包含MLET标记的文本文件,这些标记定义要添加到MBean服务器的MBean。URL[]
getURLs()
返回用于加载类和资源的URL的搜索路径。类<?>
loadClass(String name, ClassLoaderRepository clr)
如果在此MLet的URL中找不到该类,则使用给定的ClassLoaderRepository
加载一个类。void
postDeregister()
允许m-let在MBean服务器中取消注册后执行所需的任何操作。void
postRegister(Boolean registrationDone)
允许m-let在MBean服务器中注册后或注册失败后执行所需的任何操作。void
preDeregister()
允许m-let在MBean服务器取消注册之前执行所需的任何操作。ObjectName
preRegister(MBeanServer server, ObjectName name)
允许m-let在MBean服务器中注册之前执行所需的任何操作。void
readExternal(ObjectInput in)
从给定的ObjectInput
恢复此MLet的内容。void
setLibraryDirectory(String libdir)
设置库加载器用于在将本机库加载到内存之前存储的目录。void
writeExternal(ObjectOutput out)
将此MLet的内容保存到给定的ObjectOutput
。-
声明方法的类 java.net.URLClassLoader
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, newInstance, newInstance
-
声明方法的类 java.security.SecureClassLoader
defineClass, defineClass
-
声明方法的类 java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, 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
。
-
MLet
public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
为给定的URL构造一个新的MLet。 首次在指定的父类加载器中搜索后,将按照为类和资源指定的顺序搜索URL。 parent参数将用作委托的父类加载器。- 参数
-
urls
- 从中加载类和资源的URL。 -
parent
- 用于委派的父类加载器。 -
delegateToCLR
- 如果在父类ClassLoader或URL中找不到类,则MLet应委托给其包含MBeanServer的ClassLoaderRepository
。
-
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
。
-
-
方法详细信息
-
addURL
public void addURL(URL url)
将指定的URL附加到URL列表以搜索类和资源。- Specified by:
-
addURL
在界面MLetMBean
- 重写:
-
addURL
在类URLClassLoader
- 参数
-
url
- 要添加到URL搜索路径的URL
-
addURL
public void addURL(String url) throws ServiceNotFoundException
将指定的URL附加到URL列表以搜索类和资源。- Specified by:
-
addURL
在界面MLetMBean
- 参数
-
url
- 要添加的URL。 - 异常
-
ServiceNotFoundException
- 指定的URL格式错误。
-
getURLs
public URL[] getURLs()
返回用于加载类和资源的URL的搜索路径。 这包括为构造函数指定的原始URL列表,以及随后由addURL()方法追加的任何URL。- Specified by:
-
getURLs
在界面MLetMBean
- 重写:
-
getURLs
在类URLClassLoader
- 结果
- 用于加载类和资源的URL的搜索路径。
-
getMBeansFromURL
public Set<Object> getMBeansFromURL(URL url) throws ServiceNotFoundException
加载包含MLET标记的文本文件,这些标记定义要添加到MBean服务器的MBean。 文本文件的位置由URL指定。 MLET文件中指定的MBean将在MBean服务器中实例化并注册。- Specified by:
-
getMBeansFromURL
在界面MLetMBean
- 参数
-
url
- 要作为URL对象加载的文本文件的URL。 - 结果
- 加载了m-let文本文件中每个MLET标记包含一个条目的集合。 如果无法创建MBean,则每个条目指定已创建MBean的ObjectInstance或可抛出对象(即错误或异常)。
- 异常
-
ServiceNotFoundException
- 发生以下错误之一:m-let文本文件不包含MLET标记,找不到m-let文本文件,未指定MLET标记的强制属性,url的值为null 。 -
IllegalStateException
- MLet MBean未向MBeanServer注册。
-
getMBeansFromURL
public Set<Object> getMBeansFromURL(String url) throws ServiceNotFoundException
加载包含MLET标记的文本文件,这些标记定义要添加到MBean服务器的MBean。 文本文件的位置由URL指定。 MLET文件中指定的MBean将在MBean服务器中实例化并注册。- Specified by:
-
getMBeansFromURL
在界面MLetMBean
- 参数
-
url
- 要作为String对象加载的文本文件的URL。 - 结果
- 加载了m-let文本文件中每个MLET标记包含一个条目的集合。 如果无法创建MBean,则每个条目指定已创建MBean的ObjectInstance或可抛出对象(即错误或异常)。
- 异常
-
ServiceNotFoundException
- 发生以下错误之一:m-let文本文件不包含MLET标记,找不到m-let文本文件,未指定MLET标记的强制属性,URL格式错误。 -
IllegalStateException
- MLet MBean未向MBeanServer注册。
-
getLibraryDirectory
public String getLibraryDirectory()
获取库加载器用于在将本机库加载到内存之前存储的当前目录。- Specified by:
-
getLibraryDirectory
在界面MLetMBean
- 结果
- 库加载器使用的当前目录。
- 异常
-
UnsupportedOperationException
- 如果此实现不支持以这种方式存储本机库。 - 另请参见:
-
setLibraryDirectory(java.lang.String)
-
setLibraryDirectory
public void setLibraryDirectory(String libdir)
设置库加载器用于在将本机库加载到内存之前存储的目录。- Specified by:
-
setLibraryDirectory
在界面MLetMBean
- 参数
-
libdir
- 库加载器使用的目录。 - 异常
-
UnsupportedOperationException
- 如果此实现不支持以这种方式存储本机库。 - 另请参见:
-
getLibraryDirectory()
-
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws 异常
允许m-let在MBean服务器中注册之前执行所需的任何操作。 如果ObjectName为null,则m-let为其注册<defaultDomain>提供默认名称:type = MLet- Specified by:
-
preRegister
在界面MBeanRegistration
- 参数
-
server
- 将在其中注册m-let的MBean服务器。 -
name
- m-let的对象名称。 - 结果
- m-let注册的名称。
- 异常
-
异常
- 此异常应由MBean服务器捕获并作为MBeanRegistrationException重新抛出。
-
postRegister
public void postRegister(Boolean registrationDone)
允许m-let在MBean服务器中注册后或注册失败后执行所需的任何操作。- Specified by:
-
postRegister
在界面MBeanRegistration
- 参数
-
registrationDone
- 指示m-let是否已在MBean服务器中成功注册。 值false表示注册阶段失败。
-
preDeregister
public void preDeregister() throws 异常
允许m-let在MBean服务器取消注册之前执行所需的任何操作。- Specified by:
-
preDeregister
在界面MBeanRegistration
- 异常
-
异常
- 此异常应由MBean服务器捕获并作为MBeanRegistrationException重新抛出。
-
postDeregister
public void postDeregister()
允许m-let在MBean服务器中取消注册后执行所需的任何操作。- Specified by:
-
postDeregister
在界面MBeanRegistration
-
writeExternal
public void writeExternal(ObjectOutput out) throws IOException, UnsupportedOperationException
将此MLet的内容保存到给定的
ObjectOutput
。 并非所有实现都支持此方法。 那些不扔UnsupportedOperationException
。 子类可以重写此方法以支持它或更改写入数据的格式。未指定写入数据的格式,但如果实现支持
writeExternal(java.io.ObjectOutput)
,则它还必须支持readExternal(java.io.ObjectInput)
,以便后者可以读取前者编写的内容。- Specified by:
-
writeExternal
在界面Externalizable
- 参数
-
out
- 要写入的对象输出流。 - 异常
-
IOException
- 如果写入时出现问题。 -
UnsupportedOperationException
- 如果此实现不支持此操作。
-
readExternal
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException, UnsupportedOperationException
从给定的
ObjectInput
恢复此MLet的内容。 并非所有实现都支持此方法。 那些不扔UnsupportedOperationException
。 子类可以重写此方法以支持它或更改读取数据的格式。未指定读取数据的格式,但如果实现支持
readExternal(java.io.ObjectInput)
,则它必须支持writeExternal(java.io.ObjectOutput)
,前者可以读取后者编写的内容。- Specified by:
-
readExternal
在界面Externalizable
- 参数
-
in
- 要读取的对象输入流。 - 异常
-
IOException
- 如果阅读时出现问题。 -
ClassNotFoundException
- 如果找不到要还原的对象的类。 -
UnsupportedOperationException
- 如果此实现不支持此操作。
-
loadClass
public 类<?> loadClass(String name, ClassLoaderRepository clr) throws ClassNotFoundException
如果在此MLet的URL中找不到该类,则使用给定的
ClassLoaderRepository
加载一个类。 给定的ClassLoaderRepository可以为null,在这种情况下,如果在此MLet的URL中找不到该类,则会立即发生ClassNotFoundException
。- 参数
-
name
- 我们要加载的类的名称。 -
clr
- 将用于搜索给定类的ClassLoaderRepository(如果在此ClassLoader中找不到它)。 可能为空。 - 结果
- 生成的Class对象。
- 异常
-
ClassNotFoundException
- 在此ClassLoader和给定的ClassLoaderRepository中找不到指定的类。
-
findClass
protected 类<?> findClass(String name) throws ClassNotFoundException
这是正在重新定义的类加载器的主要方法。- 重写:
-
findClass
在类URLClassLoader
- 参数
-
name
- 类的名称。 - 结果
- 生成的Class对象。
- 异常
-
ClassNotFoundException
- 找不到指定的类。
-
findLibrary
protected String findLibrary(String libname)
返回本机库的绝对路径名。 VM调用此方法来查找属于使用此类加载器加载的类的本机库。 首先使用本机库名称在JAR文件中搜索库,如果没有找到本机库名称以及特定于体系结构的路径名(OSName/OSArch/OSVersion/lib/nativelibname
),即Solaris SPARC 5.7上的库统计信息将在JAR文件中搜索为:
- libstat.so
- 在SunOS / SPARC / 5.7 / lib中/ libstat.so
- stat.dll
- WindowsNT的/ 86 / 4.0 / lib中/ stat.dll
更具体地,让
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)
-
check
protected URL check(String version, URL codebase, String jarfile, MLetContent mlet) throws 异常
在扩展此服务以支持缓存和版本控制时,将覆盖此方法。 当从MLet文件中提取版本,代码库和jarfile时,从
getMBeansFromURL
调用它,并且可以用于验证加载给定MBean是否可行,或者用不同的URL替换给定的URL。此方法的默认实现返回
codebase
不变。- 参数
-
version
- 本地存储的.jar
文件的版本号。 -
codebase
- 远程.jar
文件的基本URL。 -
jarfile
- 要加载的.jar
文件的名称。 -
mlet
- 表示MLET
标记的MLetContent
实例。 - 结果
- 用于加载的MBean的代码库。 返回的值不应为null。
- 异常
-
异常
- 如果由于某种原因不加载MBean。 该异常将添加到getMBeansFromURL
返回的集合中 。
-
-