public class MLet extends URLClassLoader implements MLetMBean, MBeanRegistration, Externalizable
MLET标记具有以下语法:
< MLET
CODE = 类 | OBJECT = serfile
ARCHIVE = " archiveList "
[CODEBASE = codebaseURL ]
[NAME = mbeanname ]
[VERSION = 版本 ]
>
[ arglist ]
< /MLET >
哪里:
CODE = 类
.class文件的MBean必须包含在一个.jar由指定的文件ARCHIVE属性。
必须存在CODE或OBJECT 。
OBJECT = serfile
.ser文件。
此文件必须包含在一个.jar由指定的文件ARCHIVE属性。
如果.jar文件包含目录层次结构,请指定此层次结构中文件的路径。
否则将找不到匹配项。
必须存在CODE或OBJECT 。
ARCHIVE = " archiveList "
.jar MBean所使用的MBean或其他资源的.jar文件。
.jar文件之一必须包含由CODE或OBJECT属性指定的文件。
如果存档列表包含多个文件:
.jar文件archiveList中必须存储在由代码库URL指定的目录。
CODEBASE = codebaseURL
.jar由指定的文件ARCHIVE属性。
仅当.jar文件与m-let文本文件不在同一目录中时才指定此属性。
如果未指定此属性,则使用m-let文本文件的基本URL。
NAME = mbeanname
MBeanServer.getDefaultDomain()返回。
VERSION = 版本
.jar文件的版本号。
该版本号可用于指定从服务器加载.jar文件,以便在下次加载m-let文本文件时更新本地存储在缓存中的文件。
版本必须是一系列非负十进制整数,每个十进制整数与之前的一个周期隔开。
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服务扩展了java.net.URLClassLoader ,可用于在代理的VM中加载远程类和jar文件。
注 - MLet类加载器使用MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer)加载在加载的jar文件中找不到的类。
| Constructor and Description |
|---|
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。
|
| Modifier and Type | Method and Description |
|---|---|
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)
加载一个包含定义要添加到MBean服务器的MBean的MLET标签的文本文件。
|
Set<Object> |
getMBeansFromURL(URL url)
加载一个包含定义要添加到MBean服务器的MBean的MLET标签的文本文件。
|
URL[] |
getURLs()
返回加载类和资源的URL的搜索路径。
|
类<?> |
loadClass(String name, ClassLoaderRepository clr)
加载一个类,使用给定的 ClassLoaderRepository如果该类没有在这个MLet的URL中找到。
|
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 。
|
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, newInstance, newInstancedefineClass, defineClassclearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignersclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetResource, getResourceAsStream, getResourcespublic 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 。
public MLet(URL[] urls, ClassLoader parent, boolean delegateToCLR)
urls - 加载类和资源的URL。
parent - 用于委派的父类加载器。
delegateToCLR - 如果在父类ClassLoader或URL中找不到类时,则MLet应委托其包含的MBeanServer ClassLoaderRepository 。
public MLet(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory, boolean delegateToCLR)
urls - 加载类和资源的URL。
parent - 用于委派的父类加载器。
factory - 创建URL时要使用的URLStreamHandlerFactory。
delegateToCLR - 如果在父类ClassLoader或URL中找不到类时,则MLet应委托其包含的MBeanServer ClassLoaderRepository 。
public void addURL(URL url)
addURL在界面
MLetMBean
addURL在
URLClassLoader
url - 要添加到URL搜索路径的URL
public void addURL(String url) throws ServiceNotFoundException
addURL中的
MLetMBean
url - 要添加的URL。
ServiceNotFoundException - 指定的网址格式错误。
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 - 要作为String对象加载的文本文件的URL。
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 异常
preRegister在界面
MBeanRegistration
server - 将在其中注册m-let的MBean服务器。
name - m-let的对象名。
异常 - MBean服务器应该捕获此异常,并重新抛出MBeanRegistrationException异常。
public void postRegister(Boolean registrationDone)
postRegister在接口
MBeanRegistration
registrationDone - 指示m-let是否已在MBean服务器中成功注册。
值false表示注册阶段失败。
public void preDeregister()
throws 异常
preDeregister在界面
MBeanRegistration
异常 - 这个异常应该被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 类<?> loadClass(String name, ClassLoaderRepository clr) throws ClassNotFoundException
加载一个类,使用给定的ClassLoaderRepository如果该类没有在这个MLet的URL中找到。 给定的ClassLoaderRepository可以为null,在这种情况下,如果在该MLet的URL中找不到该类,则会立即发生一个ClassNotFoundException 。
name - 我们要加载的类的名称。
clr - 将用于搜索给定类的ClassLoaderRepository,如果在此ClassLoader中未找到该类。
可能为null。
ClassNotFoundException - 在此ClassLoader或给定的ClassLoaderRepository中找不到指定的类。
protected 类<?> 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 异常
当扩展此服务以支持缓存和版本控制时,该方法将被覆盖。 当从MLet文件中提取版本,代码库和jarfile时,它被从getMBeansFromURL调用,可用于验证是否正确加载给定的MBean,或者用不同的替换来替换给定的URL。
此方法的默认实现返回codebase不变。
version - 本地存储的
.jar文件的版本号。
codebase - 远程
.jar文件的基址。
jarfile - 要加载的
.jar文件的名称。
mlet - 表示
MLET标签的
MLetContent实例。
异常 - 如果由于某种原因MBean不被加载
该异常将被添加到getMBeansFromURL返回的集合中 。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.