用于创建JMX API连接器客户端的工厂。此类没有实例。
通常使用此类的connect方法进行连接。更高级的应用程序可以分离连接器客户端的创建,使用newJMXConnector和连接本身的建立,使用JMXConnector.connect(Map)。
每个客户端由JMXConnectorProvider的实例创建。此实例如下找到。假设给定的JMXServiceURL看起来像"service:jmx:protocol:remainder"。然后工厂将尝试找到适当的JMXConnectorProvider用于protocol。在protocol中的每个+或-字符都分别替换为.或_。
提供程序包列表搜索如下:
- 如果newJMXConnector的
environment参数包含键jmx.remote.protocol.provider.pkgs,则关联的值是提供程序包列表。 - 否则,如果系统属性
jmx.remote.protocol.provider.pkgs存在,则其值是提供程序包列表。 - 否则,没有提供程序包列表。
提供程序包列表是一个字符串,解释为由竖线(|)分隔的非空Java包名称列表。如果字符串为空,则提供程序包列表也为空。如果提供程序包列表不是字符串,或者包含一个空字符串元素,则会抛出一个JMXProviderException。
如果提供程序包列表存在且不为空,则对列表的每个元素pkg,工厂将尝试加载类
pkg.protocol.ClientProvider
如果newJMXConnector的environment参数包含键jmx.remote.protocol.provider.class.loader,则关联的值是用于加载提供程序的类加载器。如果关联的值不是ClassLoader的实例,则会抛出一个IllegalArgumentException。
如果jmx.remote.protocol.provider.class.loader键不存在于environment参数中,则使用调用线程的上下文类加载器。
如果尝试加载此类产生一个ClassNotFoundException,则继续搜索处理程序的下一个元素。
否则,找到的提供程序存在问题,通过一个JMXProviderException来表示,其cause指示底层异常,如下:
- 如果尝试加载类产生除
ClassNotFoundException之外的异常,则该cause; - 如果类的
Class.newInstance()产生异常,则该cause。
如果通过上述步骤找不到提供程序,包括没有提供程序包列表的默认情况,则实现将使用其自己的protocol提供程序,或者如果没有,则会抛出MalformedURLException。实现可以选择通过其他方式找到提供程序。例如,它可以支持服务提供程序,其中服务接口是JMXConnectorProvider。
每个实现必须支持具有默认RMI传输的RMI连接器协议,指定为字符串rmi。
找到提供程序后,newJMXConnector方法的结果是在提供程序上调用newJMXConnector的结果。
传递给JMXConnectorProvider的Map参数是一个新的只读Map,其中包含environment参数中的所有条目,如果有的话。此外,如果environment参数中不存在jmx.remote.protocol.provider.class.loader键,则将其添加到新的只读Map中。关联的值是调用线程的上下文类加载器。
- 自版本:
- 1.5
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic JMXConnectorconnect(JMXServiceURL serviceURL) 创建到给定地址的连接到连接器服务器的连接。static JMXConnectorconnect(JMXServiceURL serviceURL, Map<String, ?> environment) 创建到给定地址的连接到连接器服务器的连接。static JMXConnectornewJMXConnector(JMXServiceURL serviceURL, Map<String, ?> environment) 为给定地址的连接器服务器创建连接器客户端。
-
Field Details
-
DEFAULT_CLASS_LOADER
指定默认类加载器的属性名称。此类加载器用于反序列化远程
MBeanServerConnection调用的返回值和异常。与此属性关联的值是ClassLoader的实例。- 参见:
-
PROTOCOL_PROVIDER_PACKAGES
指定在查找协议处理程序时要查询的提供程序包的属性名称。与此属性关联的值是由竖线(
|)分隔的包名称的字符串。- 参见:
-
PROTOCOL_PROVIDER_CLASS_LOADER
指定用于加载协议提供程序的类加载器的属性名称。与此属性关联的值是
ClassLoader的实例。- 参见:
-
-
Method Details
-
connect
创建到给定地址的连接到连接器服务器的连接。
此方法等效于
connect(serviceURL, null)。- 参数:
-
serviceURL- 要连接的连接器服务器的地址。 - 返回:
-
调用了
connect方法的JMXConnector。 - 抛出:
-
NullPointerException- 如果serviceURL为null。 -
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为null。 -
IOException- 如果由于通信问题无法创建连接器客户端或连接。 -
SecurityException- 如果由于安全原因无法创建连接。
-
newJMXConnector
public static JMXConnector newJMXConnector(JMXServiceURL serviceURL, Map<String, ?> environment) throws IOException为给定地址的连接器服务器创建连接器客户端。生成的客户端在调用其
connect方法之前不会连接。- 参数:
-
serviceURL- 要连接的连接器服务器的地址。 -
environment- 一组属性,用于确定连接方式。此参数可以为null。此映射中的键必须为字符串。每个关联值的适当类型取决于属性。environment的内容不会因此调用而更改。 - 返回:
-
代表新连接器客户端的
JMXConnector。对此方法的每次成功调用都会产生一个不同的对象。 - 抛出:
-
NullPointerException- 如果serviceURL为null。 -
IOException- 如果由于通信问题而无法创建连接器客户端。 -
MalformedURLException- 如果serviceURL中的协议没有提供程序。 -
JMXProviderException- 如果serviceURL中存在协议的提供程序,但由于某种原因无法使用。
-