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
中有协议的提供者,但由于某种原因不能使用。