- java.lang.Object
-
- javax.management.remote.JMXConnectorFactory
-
public class JMXConnectorFactory extends Object
工厂创建JMX API连接器客户端。 没有这个类的实例。
通常使用此类的
connect方法进行连接。 更先进的应用程序可以分开连接器客户端的创建,使用newJMXConnector并建立使用连接本身的JMXConnector.connect(Map)。每个客户端都由
JMXConnectorProvider的实例创建。 该实例如下所示。 假设给定的JMXServiceURL看起来像"service:jmx:protocol:remainder"。 然后工厂将尝试找到合适JMXConnectorProvider为protocol。-中的每个字符+或-的protocol分别由.或_代替。搜索提供程序包列表 ,如下所示:
- 如果
environment参数newJMXConnector包含关键字jmx.remote.protocol.provider.pkgs则关联的值为提供者包列表。 - 否则,如果系统属性
jmx.remote.protocol.provider.pkgs存在,则其值为提供程序包列表。 - 否则,没有提供程序包列表。
提供程序包列表是一个字符串,它被解释为由竖线分隔的非空Java包名称列表(
|)。 如果字符串为空,那么提供程序包列表也是如此。 如果提供程序包列表不是String,或者它包含一个空字符串的元素,则抛出JMXProviderException。如果提供程序包列表存在且不为空,则对于列表的每个元素
pkg,工厂将尝试加载该类pkg.protocol.ClientProvider如果
environment参数newJMXConnector包含关键字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 ,其中服务接口是JMXConnectorProvider。每个实现必须支持具有默认RMI传输的RMI连接器协议,使用字符串
rmi指定。找到提供者后,
newJMXConnector方法的结果是在提供者上调用newJMXConnector的结果。传递给
JMXConnectorProvider的Map参数是一个新的只读Map,其中包含environment参数中JMXConnectorFactory.newJMXConnector的所有条目(如果有的话)。 此外,如果environment参数中不存在jmx.remote.protocol.provider.class.loader密钥,则会将其添加到新的只读Map。 关联的值是调用线程的上下文类加载器。- 从以下版本开始:
- 1.5
- 如果
-
-
字段汇总
字段 变量和类型 字段 描述 static StringDEFAULT_CLASS_LOADER指定默认类加载器的属性的名称。static StringPROTOCOL_PROVIDER_CLASS_LOADER指定用于加载协议提供程序的类加载器的属性的名称。static StringPROTOCOL_PROVIDER_PACKAGES指定在查找协议处理程序时参考的提供程序包的属性的名称。
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static JMXConnectorconnect(JMXServiceURL serviceURL)在给定地址创建与连接器服务器的连接。static JMXConnectorconnect(JMXServiceURL serviceURL, Map<String,?> environment)在给定地址创建与连接器服务器的连接。static JMXConnectornewJMXConnector(JMXServiceURL serviceURL, Map<String,?> environment)在给定地址为连接器服务器创建连接器客户端。
-
-
-
字段详细信息
-
DEFAULT_CLASS_LOADER
public static final String DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。 此类加载器用于反序列化远程
MBeanServerConnection调用的返回值和异常。 与此属性关联的值是ClassLoader的实例。- 另请参见:
- 常数字段值
-
PROTOCOL_PROVIDER_PACKAGES
public static final String PROTOCOL_PROVIDER_PACKAGES
指定在查找协议处理程序时参考的提供程序包的属性的名称。 与此属性关联的值是一个字符串,其包名称由竖线(
|)分隔。- 另请参见:
- 常数字段值
-
PROTOCOL_PROVIDER_CLASS_LOADER
public static final String PROTOCOL_PROVIDER_CLASS_LOADER
指定用于加载协议提供程序的类加载器的属性的名称。 与此属性关联的值是
ClassLoader的实例。- 另请参见:
- 常数字段值
-
-
方法详细信息
-
connect
public static JMXConnector connect(JMXServiceURL serviceURL) throws IOException
在给定地址创建与连接器服务器的连接。
该方法相当于
connect(serviceURL, null)。- 参数
-
serviceURL- 要连接的连接器服务器的地址。 - 结果
-
a
JMXConnector其 调用方法为JMXConnector。 - 异常
-
NullPointerException- 如果serviceURL为空。 -
IOException- 如果由于通信问题而无法建立连接器客户端或连接。 -
SecurityException- 如果出于安全原因无法建立连接。
-
connect
public static JMXConnector connect(JMXServiceURL serviceURL, Map<String,?> environment) throws IOException
在给定地址创建与连接器服务器的连接。
这种方法相当于:
JMXConnector conn = JMXConnectorFactory.newJMXConnector(serviceURL, environment); conn.connect(environment);- 参数
-
serviceURL- 要连接的连接器服务器的地址。 -
environment- 用于确定连接方式的一组属性。 此参数可以为null。 此映射中的键必须是字符串。 每个关联值的适当类型取决于属性。 此调用不会更改environment的内容。 - 结果
-
表示新建连接的
JMXConnector。 每次成功调用此方法都会生成不同的对象。 - 异常
-
NullPointerException- 如果serviceURL为空。 -
IOException- 如果由于通信问题而无法建立连接器客户端或连接。 -
SecurityException- 如果出于安全原因无法建立连接。
-
newJMXConnector
public static JMXConnector newJMXConnector(JMXServiceURL serviceURL, Map<String,?> environment) throws IOException
在给定地址为连接器服务器创建连接器客户端。 在调用其
connect方法之前,结果客户端未连接。- 参数
-
serviceURL- 要连接的连接器服务器的地址。 -
environment- 用于确定连接方式的一组属性。 此参数可以为null。 此映射中的键必须是字符串。 每个关联值的适当类型取决于属性。 此调用不会更改environment的内容。 - 结果
-
表示新连接器客户端的
JMXConnector。 每次成功调用此方法都会生成不同的对象。 - 异常
-
NullPointerException- 如果serviceURL为空。 -
IOException- 如果由于通信问题而无法建立连接器客户端。 -
MalformedURLException-如果没有供应商在协议serviceURL。 -
JMXProviderException-如果在协议供应商serviceURL,但它不能用于某些原因。
-
-