模块  java.management

Class MLet

  • 实现的所有接口
    CloseableExternalizableSerializableAutoCloseableMLetMBeanMBeanRegistration
    已知直接子类:
    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文件之一中。 必须存在CODEOBJECT
    OBJECT = serfile
    此属性指定包含要获取的MBean的序列化表示的.ser文件。 此文件必须包含在ARCHIVE属性指定的.jar文件之一中。 如果.jar文件包含目录层次结构,请指定此层次结构中文件的路径。 否则将找不到匹配项。 必须存在CODEOBJECT
    ARCHIVE = " archiveList "
    此强制属性指定一个或多个.jar文件,其中包含要获取的MBean使用的MBean或其他资源。 其中一个.jar文件必须包含由CODEOBJECT属性指定的文件。 如果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= 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。 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
      • 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注册。
      • 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
      • 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中找不到指定的类。
      • findLibrary

        protected String findLibrary​(String libname)
        返回本机库的绝对路径名。 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的/ 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返回的集合中