public class JMXConnectorFactory extends Object
工厂创建JMX API连接器客户端。 没有这个类的实例。
连接通常使用此类的connect方法。 更高级的应用程序可以分离连接器客户端的创建,使用newJMXConnector和建立连接本身,使用JMXConnector.connect(Map) 。
每个客户端由JMXConnectorProvider的实例创建。 这个实例如下。 假设给定的JMXServiceURL看起来像"service:jmx:protocol:remainder" 。 那么工厂将尝试找到适合的JMXConnectorProvider为protocol 。 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被抛出。
如果jmx.remote.protocol.provider.class.loader关键是不存在environment参数,则使用调用线程的上下文类加载器。
如果加载此类的尝试产生了一个ClassNotFoundException ,则处理程序的搜索将继续列表的下一个元素。
否则,找到的提供商的问题由JMXProviderException表示,其cause表示基础异常,如下所示:
ClassNotFoundException之外的ClassNotFoundException ,那就是原因 ; Class.newInstance()为该类产生异常,那就是原因 。 如果没有提供者通过上述步骤找到,包括没有提供程序包列表的默认情况,那么实现将使用自己的提供者为protocol ,否则将抛出MalformedURLException如果没有)。 实施可以选择通过其他方式查找提供商。 例如,它可以支持JAR conventions for service providers ,其中服务接口是JMXConnectorProvider 。
每个实现必须支持具有默认RMI传输的RMI连接器协议,用串rmi 。 实现可以可选地支持具有用字符串iiop的RMI / IIOP传输的RMI连接器协议。
一旦找到提供商, newJMXConnector方法的结果是在提供商上调用newJMXConnector的结果。
该Map传递给参数JMXConnectorProvider是一个新的只读Map包含所有均在条目environment参数JMXConnectorFactory.newJMXConnector ,如果有一个。 此外,如果jmx.remote.protocol.provider.class.loader关键是不存在environment参数,它被添加到新的只读Map 。 关联的值是调用线程的上下文类加载器。
| Modifier and Type | Field and Description |
|---|---|
static String |
DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。
|
static String |
PROTOCOL_PROVIDER_CLASS_LOADER
指定加载协议提供程序的类加载器的属性的名称。
|
static String |
PROTOCOL_PROVIDER_PACKAGES
指定在查找协议的处理程序时查询的提供程序包的属性的名称。
|
| Modifier and Type | Method and Description |
|---|---|
static JMXConnector |
connect(JMXServiceURL serviceURL)
创建与给定地址的连接器服务器的连接。
|
static JMXConnector |
connect(JMXServiceURL serviceURL, Map<String,?> environment)
创建与给定地址的连接器服务器的连接。
|
static JMXConnector |
newJMXConnector(JMXServiceURL serviceURL, Map<String,?> environment)
在给定的地址创建连接器服务器的连接器客户端。
|
public static final String DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。 此类加载器用于从远程MBeanServerConnection调用反序列化返回值和异常。 与此属性关联的值是一个实例ClassLoader 。
public static final String PROTOCOL_PROVIDER_PACKAGES
指定在查找协议的处理程序时查询的提供程序包的属性的名称。 与此属性相关联的值是一个包含名称由竖线分隔的字符串( | )。
public static final String PROTOCOL_PROVIDER_CLASS_LOADER
指定加载协议提供程序的类加载器的属性的名称。 与此属性关联的值是一个实例ClassLoader 。
public static JMXConnector connect(JMXServiceURL serviceURL) throws IOException
创建与给定地址的连接器服务器的连接。
此方法相当于connect(serviceURL, null) 。
serviceURL - 要连接的连接器服务器的地址。
JMXConnector的
connect方法被调用。
NullPointerException - 如果
serviceURL为空。
IOException - 如果连接器客户端或连接由于通信问题而无法建立。
SecurityException - 如果由于安全原因无法连接。
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 - 如果由于安全原因无法连接。
public static JMXConnector newJMXConnector(JMXServiceURL serviceURL, Map<String,?> environment) throws IOException
在给定的地址创建连接器服务器的连接器客户端。 在调用connect方法之前,结果客户端不连接。
serviceURL - 要连接的连接器服务器的地址。
environment - 一组用于确定连接的属性。
此参数可以为null。
此地图中的键必须是字符串。
每个关联值的适当类型取决于属性。
environment的内容不会被此呼叫更改。
JMXConnector新的连接器客户端的JMXConnector。
每次成功调用此方法都会产生不同的对象。
NullPointerException - 如果
serviceURL为空。
IOException - 如果由于通信问题导致连接器客户端无法创建。
MalformedURLException -如果没有供应商在协议
serviceURL 。
JMXProviderException - 如果在
serviceURL中有协议的提供者,但由于某种原因不能使用。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.