Module  java.management

Class MLet

  • All Implemented Interfaces:
    CloseableExternalizableSerializableAutoCloseableMLetMBeanMBeanRegistration
    已知直接子类:
    PrivateMLet


    public class MLet
    extends URLClassLoader
    implements MLetMBean, MBeanRegistration, Externalizable
    允许您在来自远程URL的MBean服务器中实例化和注册一个或多个MBean。 M-let是管理小程序的捷径。 m-let服务通过加载m-let文本文件来实现,该文本文件指定要获取的MBean的信息。 每个MBean的信息在标签的单个实例中指定,称为MLET标记。 m-let文本文件的位置由URL指定。

    MLET标记具有以下语法:

    < MLET
    CODE = | OBJECT = serfile
    ARCHIVE = " archiveList "
    [CODEBASE = codebaseURL ]
    [NAME = mbeanname ]
    [VERSION = 版本 ]
    >
    [ arglist ]
    < /MLET >

    哪里:

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

    m-let服务扩展了java.net.URLClassLoader ,可用于在代理的VM中加载远程类和jar文件。

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

    从以下版本开始:
    1.5
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • 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。 父参数将被用作委托的父类加载器。
        参数
        urls - 加载类和资源的URL。
        parent - 用于委派的父类加载器。
      • MLet

        public MLet​(URL[] urls,
                    ClassLoader parent,
                    URLStreamHandlerFactory factory)
        为指定的URL,父类加载器和URLStreamHandlerFactory构造一个新的MLet。 父参数将被用作委托的父类加载器。 工厂参数将用作流处理程序工厂,以在创建新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。 父参数将被用作委托的父类加载器。
        参数
        urls - 加载类和资源的URL。
        parent - 用于委派的父类加载器。
        delegateToCLR - 如果在父类ClassLoader或URL中找不到类的话,则MLet应该委托给其包含的MBeanServer的ClassLoaderRepository
      • MLet

        public MLet​(URL[] urls,
                    ClassLoader parent,
                    URLStreamHandlerFactory factory,
                    boolean delegateToCLR)
        为指定的URL,父类加载器和URLStreamHandlerFactory构造一个新的MLet。 父参数将被用作委托的父类加载器。 工厂参数将用作流处理程序工厂,以在创建新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
        重写:
        addURLURLClassLoader
        参数
        url - 要添加到URL搜索路径的URL
      • getURLs

        public URL[] getURLs​()
        返回加载类和资源的URL的搜索路径。 这包括为构造函数指定的URL的原始列表,以及随后由addURL()方法附加的任何URL。
        Specified by:
        getURLs在接口 MLetMBean
        重写:
        getURLsURLClassLoader
        结果
        用于加载类和资源的URL的搜索路径。
      • getMBeansFromURL

        public Set<Object> getMBeansFromURL​(URL url)
                                     throws ServiceNotFoundException
        加载一个包含定义要添加到MBean服务器的MBean的MLET标签的文本文件。 文本文件的位置由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
        加载一个包含定义要添加到MBean服务器的MBean的MLET标签的文本文件。 文本文件的位置由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注册。
      • preRegister

        public ObjectName preRegister​(MBeanServer server,
                                      ObjectName name)
                               throws 异常
        允许m-let在MBean服务器注册之前执行所需的任何操作。 如果ObjectName为空,则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
      • loadClass

        public Class<?> loadClass​(String name,
                                  ClassLoaderRepository clr)
                           throws ClassNotFoundException

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

        参数
        name - 我们要加载的类的名称。
        clr - 将用于搜索给定类的ClassLoaderRepository,如果在此ClassLoader中未找到该类。 可能为null。
        结果
        生成的Class对象。
        异常
        ClassNotFoundException - 在此ClassLoader或给定的ClassLoaderRepository中找不到指定的类。
      • findLibrary

        protected String findLibrary​(String libname)
        返回本机库的绝对路径名。 VM调用此方法来查找属于此类加载器加载的类的本机库。 在JAR文件中搜索库,首先使用本机库名称,如果没有找到本机库名称以及特定于体系结构的路径名( OSName/OSArch/OSVersion/lib/nativelibname ),即

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

        1. libstat.so
        2. 在SunOS / SPARC / 5.7 / lib中/ libstat.so
        将在JAR文件中搜索Windows NT 4.0上的库统计信息:
        1. stat.dll
        2. WindowsNT的/ 86 / 4.0 / lib中/ stat.dll

        更具体地说, nativelibnameSystem.mapLibraryName (libname)的结果。 然后按照以下顺序在JAR文件中搜索以下名称:
        nativelibname
        <os.name>/<os.arch>/<os.version>/lib/ nativelibname
        其中<X>表示System.getProperty(X) ,结果中的任何空格被删除,而/代表文件分隔符( File.separator )。

        如果此方法返回null ,即在加载此类加载器的任何JAR文件中找不到库,则VM将沿着指定为java.library.path属性的路径搜索库。

        重写:
        findLibraryClassLoader
        参数
        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。

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

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