用于创建 JMX API 连接器客户端的工厂。没有此类的实例。
通常使用此类的 connect
方法进行连接。更高级的应用程序可以使用 newJMXConnector
分离连接器客户端的创建和使用 JMXConnector.connect(Map)
建立连接本身。
每个客户端都由 JMXConnectorProvider
的实例创建。这个实例是这样找到的。假设给定的 JMXServiceURL
看起来像 "service:jmx:protocol:remainder"
。然后工厂将尝试为 protocol
找到合适的 JMXConnectorProvider
。 protocol
中出现的字符 +
或 -
分别被替换为 .
或 _
。
搜索到一个provider package list如下:
- 如果
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
,它包含 JMXConnectorFactory.newJMXConnector
的 environment
参数中的所有条目(如果有的话)。此外,如果 jmx.remote.protocol.provider.class.loader
密钥不存在于 environment
参数中,它将被添加到新的只读 Map
中。关联值是调用线程的上下文类加载器。
- 自从:
- 1.5
-
字段摘要
字段 -
方法总结
修饰符和类型方法描述static JMXConnector
connect
(JMXServiceURL serviceURL) 在给定地址创建到连接器服务的连接。static JMXConnector
connect
(JMXServiceURL serviceURL, Map<String, ?> environment) 在给定地址创建到连接器服务的连接。static JMXConnector
newJMXConnector
(JMXServiceURL serviceURL, Map<String, ?> environment) 在给定地址为连接器服务创建连接器客户端。
-
字段详细信息
-
DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。此类加载器用于反序列化远程
MBeanServerConnection
调用的返回值和异常。与此属性关联的值是ClassLoader
的一个实例。- 参见:
-
PROTOCOL_PROVIDER_PACKAGES
指定在查找协议的处理程序时查询的提供程序包的属性的名称。与此属性关联的值是一个字符串,包名称由竖线分隔 (
|
)。- 参见:
-
PROTOCOL_PROVIDER_CLASS_LOADER
指定用于加载协议提供程序的类加载器的属性的名称。与此属性关联的值是
ClassLoader
的一个实例。- 参见:
-
-
方法详情
-
connect
在给定地址创建到连接器服务的连接。
此方法等效于
connect(serviceURL, null)
。- 参数:
serviceURL
- 要连接的连接器服务的地址。- 返回:
JMXConnector
其connect
方法已被调用。- 抛出:
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
- 一组属性,用于确定如何建立连接。此参数可以为空。此map中的键必须是字符串。每个关联值的适当类型取决于属性。此调用未更改environment
的内容。- 返回:
JMXConnector
代表新建立的连接。每次成功调用此方法都会生成一个不同的对象。- 抛出:
NullPointerException
- 如果serviceURL
为空。IOException
- 如果由于通信问题无法建立连接器客户端或连接。SecurityException
- 如果出于安全原因无法建立连接。
-
newJMXConnector
public static JMXConnector newJMXConnector(JMXServiceURL serviceURL, Map <String , ?> environment) throws IOException在给定地址为连接器服务创建连接器客户端。生成的客户端在其
connect
方法被调用之前不会连接。- 参数:
serviceURL
- 要连接的连接器服务的地址。environment
- 一组属性,用于确定如何建立连接。此参数可以为空。此map中的键必须是字符串。每个关联值的适当类型取决于属性。此调用未更改environment
的内容。- 返回:
JMXConnector
表示新的连接器客户端。每次成功调用此方法都会生成一个不同的对象。- 抛出:
NullPointerException
- 如果serviceURL
为空。IOException
- 如果由于通信问题而无法创建连接器客户端。MalformedURLException
- 如果serviceURL
中没有协议提供者。JMXProviderException
- 如果serviceURL
中有该协议的提供程序但由于某种原因无法使用。
-