模块  java.management

Class JMXConnectorServerFactory


  • public class JMXConnectorServerFactory
    extends Object

    工厂创建JMX API连接器服务器。 没有这个类的实例。

    每个连接器服务器由JMXConnectorServerProvider的实例创建。 该实例如下所示。 假设给定的JMXServiceURL看起来像"service:jmx:protocol:remainder" 然后工厂将尝试找到合适JMXConnectorServerProviderprotocol 字符的每一次出现+-protocol被替换._分别。

    搜索提供程序包列表 ,如下所示:

    1. 如果environment参数newJMXConnectorServer包含关键字jmx.remote.protocol.provider.pkgs则关联的值为提供者包列表。
    2. 否则,如果系统属性jmx.remote.protocol.provider.pkgs存在,则其值为提供程序包列表。
    3. 否则,没有提供程序包列表。

    提供程序包列表是一个字符串,它被解释为由竖线分隔的非空Java包名称列表( | )。 如果字符串为空,那么提供程序包列表也是如此。 如果提供程序包列表不是String,或者它包含一个空字符串的元素,则抛出JMXProviderException

    如果提供程序包列表存在且不为空,则对于列表的每个元素pkg ,工厂将尝试加载该类

    pkg.protocol.ServerProvider

    如果environment参数newJMXConnectorServer包含关键字jmx.remote.protocol.provider.class.loader ,则关联的值的类加载器用来加载提供。 如果关联值不是ClassLoader的实例,则抛出IllegalArgumentException

    如果environment参数中不存在jmx.remote.protocol.provider.class.loader键,则使用调用线程的上下文类加载器。

    如果尝试加载此类生成ClassNotFoundException ,则搜索处理程序将继续执行列表的下一个元素。

    否则,发现提供者的问题由JMXProviderException发出信号,其cause表示基础异常,如下所示:

    • 如果加载类的尝试产生ClassNotFoundException以外的异常,那就是原因 ;
    • 如果该类的Class.newInstance()产生异常,那就是原因

    如果通过上述步骤找不到提供者,包括没有提供者包列表的默认情况,则实现将使用其自己的提供者protocol ,否则如果没有提供者将抛出MalformedURLException 实现可以选择通过其他方式查找提供者。 例如,它可以支持service providers ,其中服务接口是JMXConnectorServerProvider

    每个实现都必须支持具有默认RMI传输的RMI连接器协议,使用字符串rmi指定。

    找到提供程序后, newJMXConnectorServer方法的结果是在提供程序上调用newJMXConnectorServer的结果。

    传递给JMXConnectorServerProviderMap参数是一个新的只读Map ,其中包含environment参数JMXConnectorServerFactory.newJMXConnectorServer中的所有条目(如果有)。 此外,如果environment参数中不存在jmx.remote.protocol.provider.class.loader密钥,则会将其添加到新的只读Map 关联的值是调用线程的上下文类加载器。

    从以下版本开始:
    1.5
    • 字段详细信息

      • DEFAULT_CLASS_LOADER

        public static final String DEFAULT_CLASS_LOADER

        指定默认类加载器的属性的名称。 此类加载器用于反序列化从客户端接收的请求中的对象,可能在查询MBean特定的类加载器之后。 与此属性关联的值是ClassLoader的实例。

        另请参见:
        常数字段值
      • DEFAULT_CLASS_LOADER_NAME

        public static final String DEFAULT_CLASS_LOADER_NAME

        指定默认类加载器MBean名称的属性的名称。 此类加载器用于反序列化从客户端接收的请求中的对象,可能在查询MBean特定的类加载器之后。 与此属性关联的值是ObjectName的实例。

        另请参见:
        常数字段值
      • PROTOCOL_PROVIDER_PACKAGES

        public static final String PROTOCOL_PROVIDER_PACKAGES

        指定在查找协议处理程序时参考的提供程序包的属性的名称。 与此属性关联的值是包名称由竖线分隔的字符串( | )。

        另请参见:
        常数字段值
      • PROTOCOL_PROVIDER_CLASS_LOADER

        public static final String PROTOCOL_PROVIDER_CLASS_LOADER

        指定用于加载协议提供程序的类加载器的属性的名称。 与此属性关联的值是ClassLoader的实例。

        另请参见:
        常数字段值
    • 方法详细信息

      • newJMXConnectorServer

        public static JMXConnectorServer newJMXConnectorServer​(JMXServiceURL serviceURL,
                                                               Map<String,​?> environment,
                                                               MBeanServer mbeanServer)
                                                        throws IOException

        在给定地址创建连接器服务器。 生成的服务器在调用其start方法之前不会启动。

        参数
        serviceURL - 新连接器服务器的地址。 getAddress方法返回的新连接器服务器的实际地址不一定完全相同。 例如,如果原始地址没有,则可能包含端口号。
        environment - 一组用于控制新连接器服务器行为的属性。 此参数可以为null。 此映射中的键必须是字符串。 每个关联值的适当类型取决于属性。 此调用不会更改environment的内容。
        mbeanServer - 此连接器服务器所连接的MBean服务器。 如果此连接器服务器通过在其中注册而附加到MBean服务器,则为空。
        结果
        表示新连接器服务器的JMXConnectorServer 每次成功调用此方法都会生成不同的对象。
        异常
        NullPointerException - 如果 serviceURL为空。
        IOException - 如果由于通信问题而无法建立连接器服务器。
        MalformedURLException -如果没有供应商在协议 serviceURL
        JMXProviderException -如果在协议供应商 serviceURL ,但它不能用于某些原因。