所有已实现的接口:
Closeable , Externalizable , Serializable , AutoCloseable , MLetMBean , MBeanRegistration
已知子类:
PrivateMLet

@Deprecated (since ="20", forRemoval =true) public class MLet extends URLClassLoader implements MLetMBean , MBeanRegistration , Externalizable
已弃用,将被删除:此 API 元素可能会在未来版本中删除。
此 API 是管理小程序 (m-lets) 的一部分,它是允许加载远程 MBean 的遗留功能。如果没有安全管理器,此功能将不可用,安全管理器已被弃用,并可能在未来版本中删除。因此,此 API 也已弃用并可能会被删除。没有替代品。
允许您在来自远程 URL 的 MBean 服务中实例化和注册一个或多个 MBean。 M-let是管理小程序的快捷方式。 m-let 服务通过加载 m-let 文本文件来完成此操作,该文件指定有关要获取的 MBean 的信息。每个 MBean 的信息在标记的单个实例中指定,称为 MLET 标记。 m-let 文本文件的位置由 URL 指定。

MLET 标记具有以下语法:

<MLET
CODE = | OBJECT = 服务文件
ARCHIVE = " 归档列表"
[CODEBASE = 代码库URL]
[NAME = mbean名称]
[VERSION = 版本]
>
[ 参数表]
</MLET>

在哪里:

CODE =
此属性指定要获取的 MBean 的完整 Java 类名,包括包名。 MBean 的已编译 .class 文件必须包含在 ARCHIVE 属性指定的 .jar 文件之一中。 CODEOBJECT 必须存在。
OBJECT = 服务文件
此属性指定包含要获取的 MBean 的序列化表示的 .ser 文件。此文件必须包含在 ARCHIVE 属性指定的 .jar 文件之一中。如果 .jar 文件包含目录层次结构,请指定该层次结构中文件的路径。否则将找不到匹配项。 CODEOBJECT 必须存在。
ARCHIVE = " 归档列表"
此强制属性指定一个或多个包含 MBean 或要获取的 MBean 使用的其他资源的 .jar 文件。 .jar 文件之一必须包含由 CODEOBJECT 属性指定的文件。如果 archivelist 包含多个文件:
  • 每个文件都必须用逗号 (,) 与它后面的文件隔开。
  • 档案清单必须用双引号括起来。
所有 .jar 文件在档案清单必须存储在代码库 URL 指定的目录中。
CODEBASE = 代码库URL
此可选属性指定要获取的 MBean 的代码库 URL。它标识包含由 ARCHIVE 属性指定的 .jar 文件的目录。仅当 .jar 文件与 m-let 文本文件不在同一目录中时才指定此属性。如果未指定此属性,则使用 m-let 文本文件的基本 URL。
NAME = mbean名称
此可选属性指定在 m-let 服务注册时分配给 MBean 实例的对象名称。如果mbean名称以冒号字符 (:) 开头,对象名称的域部分是 MBean 服务的默认域,由 MBeanServer.getDefaultDomain() 返回。
VERSION = 版本
此可选属性指定要获取的 MBean 和关联的 .jar 文件的版本号。此版本号可用于指定从服务加载 .jar 文件,以便在下次加载 m-let 文本文件时更新本地存储在缓存中的文件。版本必须是一系列非负十进制整数,每个整数与前面的整数之间用句点分隔。
参数表
此可选属性为要实例化的 MBean 指定一个或多个参数的列表。此list描述了要传递给 MBean 的构造方法的参数。使用以下语法指定每个项目参数表:
<ARG TYPE=参数类型 VALUE= value>
在哪里:
  • 参数类型是将作为参数传递给 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 文件。

Note - MLet 类加载器使用 MBeanServerFactory.getClassLoaderRepository(javax.management.MBeanServer) 加载在加载的 jar 文件中找不到的类。

自从:
1.5
参见:
  • 构造方法详细信息

    • MLet

      public MLet()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      使用默认委托父 ClassLoader 构造一个新的 MLet。
    • MLet

      public MLet(URL [] urls)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      使用默认委托父 ClassLoader 为指定的 URL 构造一个新的 MLet。在父类加载器中首次搜索后,将按照为类和资源指定的顺序搜索 URL。
      参数:
      urls - 从中加载类和资源的 URL。
    • MLet

      public MLet(URL [] urls, ClassLoader  parent)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      为给定的 URL 构造一个新的 MLet。在指定的父类加载器中首先搜索后,将按照为类和资源指定的顺序搜索 URL。 parent 参数将用作委托的父类加载器。
      参数:
      urls - 从中加载类和资源的 URL。
      parent - 委托的父类加载器。
    • MLet

      public MLet(URL [] urls, ClassLoader  parent, URLStreamHandlerFactory  factory)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的 MLet。 parent 参数将用作委托的父类加载器。工厂参数将用作流处理程序工厂,以在创建新 URL 时获取协议处理程序。
      参数:
      urls - 从中加载类和资源的 URL。
      parent - 委托的父类加载器。
      factory - 创建 URL 时要使用的 URLStreamHandlerFactory。
    • MLet

      public MLet(URL [] urls, boolean delegateToCLR)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      使用默认委托父 ClassLoader 为指定的 URL 构造一个新的 MLet。在父类加载器中首次搜索后,将按照为类和资源指定的顺序搜索 URL。
      参数:
      urls - 从中加载类和资源的 URL。
      delegateToCLR - 如果在父 ClassLoader 或 URL 中找不到类,则 MLet 应委托给包含它的 MBeanServer 的 ClassLoaderRepository
    • MLet

      public MLet(URL [] urls, ClassLoader  parent, boolean delegateToCLR)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      为给定的 URL 构造一个新的 MLet。在指定的父类加载器中首先搜索后,将按照为类和资源指定的顺序搜索 URL。 parent 参数将用作委托的父类加载器。
      参数:
      urls - 从中加载类和资源的 URL。
      parent - 委托的父类加载器。
      delegateToCLR - 如果在父 ClassLoader 或 URL 中找不到类,则 MLet 应委托给包含它的 MBeanServer 的 ClassLoaderRepository
    • MLet

      public MLet(URL [] urls, ClassLoader  parent, URLStreamHandlerFactory  factory, boolean delegateToCLR)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      为指定的 URL、父类加载器和 URLStreamHandlerFactory 构造一个新的 MLet。 parent 参数将用作委托的父类加载器。工厂参数将用作流处理程序工厂,以在创建新 URL 时获取协议处理程序。
      参数:
      urls - 从中加载类和资源的 URL。
      parent - 委托的父类加载器。
      factory - 创建 URL 时要使用的 URLStreamHandlerFactory。
      delegateToCLR - 如果在父 ClassLoader 或 URL 中找不到类,则 MLet 应委托给包含它的 MBeanServer 的 ClassLoaderRepository
  • 方法详情

    • addURL

      public void addURL(URL  url)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      将指定的 URL 附加到 URL 列表以搜索类和资源。
      指定者:
      addURL 在接口 MLetMBean
      重写:
      addURL 在类 URLClassLoader
      参数:
      url - 要添加到 URL 搜索路径的 URL
    • addURL

      public void addURL(String  url) throws ServiceNotFoundException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      将指定的 URL 附加到 URL 列表以搜索类和资源。
      指定者:
      addURL 在接口 MLetMBean
      参数:
      url - 要添加的 URL。
      抛出:
      ServiceNotFoundException - 指定的 URL 格式不正确。
    • getURLs

      public URL [] getURLs()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回用于加载类和资源的 URL 的搜索路径。这包括指定给构造方法的原始 URL 列表,以及随后由 addURL() 方法附加的任何 URL。
      指定者:
      getURLs 在接口 MLetMBean
      重写:
      getURLs 在类 URLClassLoader
      返回:
      用于加载类和资源的 URL 的搜索路径。
    • getMBeansFromURL

      public Set <Object > getMBeansFromURL(URL  url) throws ServiceNotFoundException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      加载包含 MLET 标记的文本文件,这些标记定义要添加到 MBean 服务的 MBean。文本文件的位置由 URL 指定。 MLET 文件中指定的 MBean 将在 MBean 服务中实例化和注册。
      指定者:
      getMBeansFromURL 在接口 MLetMBean
      参数:
      url - 要作为 URL 对象加载的文本文件的 URL。
      返回:
      一组包含加载的 m-let 文本文件中每个 MLET 标记的一个条目。每个条目指定创建的 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
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      加载包含 MLET 标记的文本文件,这些标记定义要添加到 MBean 服务的 MBean。文本文件的位置由 URL 指定。 MLET 文件中指定的 MBean 将在 MBean 服务中实例化和注册。
      指定者:
      getMBeansFromURL 在接口 MLetMBean
      参数:
      url - 要作为字符串对象加载的文本文件的 URL。
      返回:
      一组包含加载的 m-let 文本文件中每个 MLET 标记的一个条目。每个条目指定创建的 MBean 的 ObjectInstance,或者如果无法创建 MBean,则指定可抛出的对象(即错误或异常)。
      抛出:
      ServiceNotFoundException - 发生以下错误之一:m-let 文本文件不包含 MLET 标记,未找到 m-let 文本文件,未指定 MLET 标记的强制属性,url 格式错误。
      IllegalStateException - MLet MBean 未注册到 MBeanServer。
    • getLibraryDirectory

      public String  getLibraryDirectory()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      获取库加载程序在将本机库加载到内存之前用于存储本机库的当前目录。
      指定者:
      getLibraryDirectory 在接口 MLetMBean
      返回:
      库加载程序使用的当前目录。
      抛出:
      UnsupportedOperationException - 如果此实现不支持以这种方式存储本机库。
      参见:
    • setLibraryDirectory

      public void setLibraryDirectory(String  libdir)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      设置库加载程序在将本机库加载到内存之前用于存储本机库的目录。
      指定者:
      setLibraryDirectory 在接口 MLetMBean
      参数:
      libdir - 库加载器使用的目录。
      抛出:
      UnsupportedOperationException - 如果此实现不支持以这种方式存储本机库。
      参见:
    • preRegister

      public ObjectName  preRegister(MBeanServer  server, ObjectName  name) throws Exception
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      允许 m-let 在注册到 MBean 服务之前执行它需要的任何操作。如果 ObjectName 为 null,则 m-let 为其注册提供默认名称 <defaultDomain>:type=MLet
      指定者:
      preRegister 在接口 MBeanRegistration
      参数:
      server - 将在其中注册 m-let 的 MBean 服务。
      name - m-let 的对象名称。
      返回:
      m-let 注册的名称。
      抛出:
      Exception - 此异常应由 MBean 服务捕获并作为 MBeanRegistrationException 重新抛出。
    • postRegister

      public void postRegister(Boolean  registrationDone)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      允许 m-let 在 MBean 服务中注册后或注册失败后执行所需的任何操作。
      指定者:
      postRegister 在接口 MBeanRegistration
      参数:
      registrationDone - 指示 m-let 是否已在 MBean 服务中成功注册。值 false 表示注册阶段失败。
    • preDeregister

      public void preDeregister() throws Exception
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      允许 m-let 在被 MBean 服务注销之前执行它需要的任何操作。
      指定者:
      preDeregister 在接口 MBeanRegistration
      抛出:
      Exception - 此异常应由 MBean 服务捕获并作为 MBeanRegistrationException 重新抛出。
    • postDeregister

      public void postDeregister()
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      允许 m-let 在 MBean 服务中注销后执行所需的任何操作。
      指定者:
      postDeregister 在接口 MBeanRegistration
    • writeExternal

      public void writeExternal(ObjectOutput  out) throws IOException , UnsupportedOperationException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。

      将此 MLet 的内容保存到给定的 ObjectOutput 中。并非所有实现都支持此方法。那些不抛出 UnsupportedOperationException 的。子类可以覆盖此方法以支持它或更改写入数据的格式。

      写入数据的格式未指定,但如果实现支持writeExternal(java.io.ObjectOutput) ,则它也必须以这样的方式支持readExternal(java.io.ObjectInput) ,即前者写入的内容可以被后者读取。

      指定者:
      writeExternal 在接口 Externalizable
      参数:
      out - 要写入的对象输出流。
      抛出:
      IOException - 如果写入时出现问题。
      UnsupportedOperationException - 如果此实现不支持此操作。
    • readExternal

      已弃用,将被删除:此 API 元素可能会在未来版本中删除。

      从给定的 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
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。

      如果在此 MLet 的 URL 中找不到该类,则使用给定的 ClassLoaderRepository 加载该类。给定的 ClassLoaderRepository 可以为 null,在这种情况下,如果在此 MLet 的 URL 中找不到该类,则会立即出现 ClassNotFoundException

      参数:
      name - 我们要加载的类的名称。
      clr - 如果在此 ClassLoader 中找不到,将用于搜索给定类的 ClassLoaderRepository。可能为空。
      返回:
      结果类对象。
      抛出:
      ClassNotFoundException - 在此 ClassLoader 或给定的 ClassLoaderRepository 中找不到指定的类。
    • findClass

      protected Class <?> findClass(String  name) throws ClassNotFoundException
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      这是正在重新定义的类加载器的主要方法。
      重写:
      findClass 在类 URLClassLoader
      参数:
      name - 类的名称。
      返回:
      结果类对象。
      抛出:
      ClassNotFoundException - 找不到指定的类。
    • findLibrary

      protected String  findLibrary(String  libname)
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。
      返回本机库的绝对路径名。 VM 调用此方法来定位属于使用此类加载器加载的类的本机库。在 JAR 文件中搜索库,首先仅使用本机库名称,如果未找到本机库名称以及特定于体系结构的路径名 (OSName/OSArch/OSVersion/lib/nativelibname),即

      Solaris SPARC 5.7 上的库统计信息将在 JAR 文件中搜索为:

      1. libstat.so
      2. SunOS/sparc/5.7/lib/libstat.so
      Windows NT 4.0 上的库统计信息将在 JAR 文件中搜索为:
      1. stat.dll
      2. WindowsNT/x86/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 - 库名称。
      返回:
      本机库的绝对路径。
      参见:
    • check

      protected URL  check(String  version, URL  codebase, String  jarfile, MLetContent  mlet) throws Exception
      已弃用,将被删除:此 API 元素可能会在未来版本中删除。

      扩展此服务以支持缓存和版本控制时,将覆盖此方法。当从 MLet 文件中提取版本、代码库和 jarfile 时,它从 getMBeansFromURL 调用,可用于验证是否可以加载给定的 MBean,或将给定的 URL 替换为不同的 URL。

      此方法的默认实现返回 codebase 不变。

      参数:
      version - 本地存储的 .jar 文件的版本号。
      codebase - 远程 .jar 文件的基本 URL。
      jarfile - 要加载的 .jar 文件的名称。
      mlet - 代表 MLET 标签的 MLetContent 实例。
      返回:
      用于加载的 MBean 的代码库。返回值不应为空。
      抛出:
      Exception - 如果由于某种原因不加载 MBean。异常将添加到 getMBeansFromURL 返回的集合中。