javax.management.remote

接口
异常
java.lang.Object
  继承者 javax.management.remote.JMXConnectorServerFactory

public class JMXConnectorServerFactory
     
extends Object

用于创建 JMX API 连接器服务器的工厂。此类没有实例。

每个连接器服务器都是由 JMXConnectorServerProvider 的实例创建的。此实例如下所示。假设给定的 JMXServiceURL 类似于 "service:jmx:protocol:remainder"。则工厂将尝试查找适当的 JMXConnectorServerProvider 以供 protocol 使用。protocol 中出现的每个 +- 字符都分别由 ._ 替换。

提供者包列表 的搜索如下所示:

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

提供者包列表是一个表现为由竖直线 (|) 分隔的非空 Java 包名称列表的字符串。如果该字符串为空,则提供者包列表也为空。如果提供者包列表不是一个字符串,或者如果它包含空字符串元素,则抛出 JMXProviderException 异常。

如果存在提供者包列表并且不为空,则对于列表中的每个 pkg 元素,此工厂将尝试加载以下类

pkg.protocol.ServerProvider

如果传给 newJMXConnectorServerenvironment 参数包含关键字 jmx.remote.protocol.provider.class.loader,则关联的值为用于加载提供者的类加载器。如果关联的值不是一个 ClassLoader 的实例,则抛出 IllegalArgumentException

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

如果尝试加载该类时生成 ClassNotFoundException,则继续对列表中的下一个元素搜索处理程序。

否则,提供者查找的问题将由 JMXProviderException 通过其 cause 指示如下所示的基础异常来通知:

  • 如果尝试加载类时生成了一个 ClassNotFoundException 之外的异常,则它就是 cause
  • 如果该类的 Class.newInstance() 生成了异常,则这就是 cause

如果上述步骤中未找到任何提供者,包括无提供者包列表的默认情况,则实现将使用 protocol 自身的提供者,或者如果也没有自身的提供者,则抛出 MalformedURLException。实现也可以选择通过其他途径查找提供者。例如,它可能支持 JAR conventions for service providers,其服务接口为 JMXConnectorServerProvider

每个实现都必须支持由字符串 rmiiiop 指定的 RMI 连接器协议。

一旦找到了提供者,newJMXConnectorServer 方法的结果就是在该提供者上调用 newJMXConnectorServer 的结果。

传给 JMXConnectorServerProviderMap 参数为一个新的只读 Map,它包含了原先传给 JMXConnectorServerFactory.newJMXConnectorServerenvironment 参数中的所有条目(如果有)。此外,如果 environment 参数中没有 jmx.remote.protocol.provider.class.loader 关键字,则将此关键字添加到新的只读 Map 中。关联的值为调用线程的上下文类加载器。

从以下版本开始:
1.5

字段摘要
static String DEFAULT_CLASS_LOADER
          指定默认的类加载器的属性名称。
static String DEFAULT_CLASS_LOADER_NAME
          指定默认的类加载器 MBean 名称的属性名称。
static String PROTOCOL_PROVIDER_CLASS_LOADER
          指定用于加载协议提供者的类加载器的属性名称。
static String PROTOCOL_PROVIDER_PACKAGES
          指定查找协议的处理程序时需参考的提供者包的属性名称。
 
方法摘要
static JMXConnectorServer newJMXConnectorServer(JMXServiceURL serviceURL, Map<String,?> environment, MBeanServer mbeanServer)
          创建位于给定地址的连接器服务器。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

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 服务器,则为 Null。
返回:
代表新的连接器服务器的 JMXConnectorServer。每次对此方法的成功调用都生成不同的对象。
抛出:
NullPointerException - 如果 serviceURL 为 null。
IOException - 如果由于存在通信问题而导致无法建立连接器服务器。
MalformedURLException - 如果 serviceURL 中的协议无提供者。
JMXProviderException - 如果 serviceURL 中的协议有提供者,但提供者由于某种原因而无法使用。