public class JMXConnectorServerFactory extends Object
工厂创建JMX API连接器服务器。 没有这个类的实例。
每个连接器服务器由JMXConnectorServerProvider
的实例创建。 这个实例如下。 假设给定的JMXServiceURL
看起来像"service:jmx:protocol:remainder"
。 然后工厂将尝试找到合适JMXConnectorServerProvider
为protocol
。 protocol中的每个字符+
或-
protocol
被.
或_
替代。
搜索提供程序包列表如下:
environment
参数为newJMXConnectorServer
包含密钥jmx.remote.protocol.provider.pkgs
则关联值为提供程序包列表。 jmx.remote.protocol.provider.pkgs
存在,则其值是提供程序包列表。 提供程序包列表是一个字符串,被解释为由竖线分隔的非空Java包名称列表( |
)。 如果字符串为空,那么提供程序包列表也是如此。 如果提供程序包列表不是字符串,或者它包含一个空字符串的元素,则会抛出一个JMXProviderException
。
如果提供程序包列表存在且不为空,则对于列表的每个元素pkg
,工厂将尝试加载类
pkg.protocol.ServerProvider
如果environment
参数为newJMXConnectorServer
包含密钥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 ,其中服务接口是JMXConnectorServerProvider
。
每个实现必须支持具有默认RMI传输的RMI连接器协议,用串rmi
。 实现可以可选地支持具有用串iiop
的RMI / IIOP传输的RMI连接器协议。
一旦找到提供商, newJMXConnectorServer
方法的结果是在提供商上调用newJMXConnectorServer
的结果。
该Map
传递给参数JMXConnectorServerProvider
是一个新的只读Map
包含所有均在条目environment
参数JMXConnectorServerFactory.newJMXConnectorServer
,如果有一个。 此外,如果jmx.remote.protocol.provider.class.loader
关键是不存在environment
参数,它被添加到新的只读Map
。 关联的值是调用线程的上下文类加载器。
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。
|
static String |
DEFAULT_CLASS_LOADER_NAME
指定默认类加载器MBean名称的属性的名称。
|
static String |
PROTOCOL_PROVIDER_CLASS_LOADER
指定加载协议提供程序的类加载器的属性的名称。
|
static String |
PROTOCOL_PROVIDER_PACKAGES
指定在查找协议的处理程序时查询的提供程序包的属性的名称。
|
Modifier and Type | Method and Description |
---|---|
static JMXConnectorServer |
newJMXConnectorServer(JMXServiceURL serviceURL, Map<String,?> environment, MBeanServer mbeanServer)
在给定的地址创建一个连接器服务器。
|
public static final String DEFAULT_CLASS_LOADER
指定默认类加载器的属性的名称。 此类加载器用于在从客户端接收的请求中对对象进行反序列化,可能在咨询了MBean特定类加载器之后。 与此属性关联的值是一个实例ClassLoader
。
public static final String DEFAULT_CLASS_LOADER_NAME
指定默认类加载器MBean名称的属性的名称。 此类加载器用于在从客户端接收的请求中对对象进行反序列化,可能在咨询了MBean特定类加载器之后。 与此属性关联的值是一个实例ObjectName
。
public static final String PROTOCOL_PROVIDER_PACKAGES
指定在查找协议的处理程序时查询的提供程序包的属性的名称。 与此属性相关联的值是一个包含名称由竖线分隔的字符串( |
)。
public static final String PROTOCOL_PROVIDER_CLASS_LOADER
指定加载协议提供程序的类加载器的属性的名称。 与此属性关联的值是一个实例ClassLoader
。
public static JMXConnectorServer newJMXConnectorServer(JMXServiceURL serviceURL, Map<String,?> environment, MBeanServer mbeanServer) throws IOException
在给定的地址创建一个连接器服务器。 在调用start
方法之前,不会启动结果服务器。
serviceURL
- 新连接器服务器的地址。
由其getAddress
方法返回的新连接器服务器的实际地址不一定完全相同。
例如,如果原始地址没有,它可能包含端口号。
environment
- 一组属性来控制新的连接器服务器的行为。
此参数可以为null。
此地图中的键必须是字符串。
每个关联值的适当类型取决于属性。
environment
的内容不会被此呼叫更改。
mbeanServer
- 此连接器服务器连接到的MBean服务器。
如果此连接器服务器将通过注册到MBean服务器,则为空。
JMXConnectorServer
新连接器服务器的JMXConnectorServer。
每次成功调用此方法都会产生不同的对象。
NullPointerException
- 如果
serviceURL
为空。
IOException
- 如果连接器服务器由于通信问题而无法制作。
MalformedURLException
- 如果在
serviceURL
中没有协议的提供者。
JMXProviderException
-如果在协议供应商
serviceURL
,但它不能用于某些原因。