public interface JMXConnector
JMX API 连接器的客户端。使用此类型的对象可建立到连接器服务器的连接。
新创建的此类型对象尚未连接。在此对象能够使用之前,必须调用其 connect
方法。但是,由 JMXConnectorFactory.connect
创建的对象已经连接。
字段摘要 | |
---|---|
static String |
CREDENTIALS 属性的名称,它指定了连接过程中发送给连接器服务器的凭据。 |
方法摘要 | |
---|---|
void |
addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) 添加一个接收连接状态改变的侦听器。 |
void |
close() 关闭客户端到其服务器的连接。 |
void |
connect() 建立到连接器服务器的连接。 |
void |
connect(Map<String,?> env) 建立到连接器服务器的连接。 |
String |
getConnectionId() 获得来自连接器服务器的连接 ID。 |
MBeanServerConnection |
getMBeanServerConnection() 返回一个代表远程 MBean 服务器的 MBeanServerConnection 对象。 |
MBeanServerConnection |
getMBeanServerConnection(Subject delegationSubject) 返回 MBeanServerConnection 对象,它表示在其上执行代表提供的委托主题操作的远程 MBean 服务器。 |
void |
removeConnectionNotificationListener(NotificationListener listener) 将一个用于接收状态更改通知的侦听器从列表中移除。 |
void |
removeConnectionNotificationListener(NotificationListener l, NotificationFilter f, Object handback) 将一个用于接收状态更改通知的侦听器从列表中移除。 |
字段详细信息 |
---|
static final String CREDENTIALS
属性的名称,它指定了连接过程中发送给连接器服务器的凭据。与此属性关联的值(如果有)为服务器的 JMXAuthenticator
的具有适当类型的可序列化的对象。
方法详细信息 |
---|
void connect() throws IOException
建立到连接器服务器的连接。此方法等效于 connect(null)
。
IOException
- 如果由于存在通信问题而导致无法建立连接。
SecurityException
- 如果由于安全原因而无法建立连接。
void connect(Map<String,?> env) throws IOException
建立到连接器服务器的连接。
如果已在该对象上成功调用了 connect
,则再次调用将没有任何作用。但是,如果 close()
是在调用 connect
之后调用的,则新的 connect
将抛出 IOException
。
否则,在此对象上未调用过任何一个 connect
,或者虽然调用过但生成了一个异常。然后对 connect
的调用将试图建立到连接器服务器的连接。
env
- 连接的属性。此映射中的属性重写创建
JMXConnector
时指定的映射中的属性(如果有)。此参数可以为 null,其等效于一个空映射。
IOException
- 如果由于存在通信问题而导致无法建立连接。
SecurityException
- 如果由于安全原因而无法建立连接。
MBeanServerConnection getMBeanServerConnection() throws IOException
返回一个代表远程 MBean 服务器的 MBeanServerConnection
对象。对于给定的 JMXConnector
,对此方法两次成功的调用通常将返回相同的 MBeanServerConnection
对象,尽管不需要这样做。
对于返回的 MBeanServerConnection
中的每个方法,调用该方法将导致调用远程 MBean 服务器中的相应方法。MBean 服务器方法返回的值就是返回给客户端的值。如果 MBean 服务器方法生成了 Exception
,则客户端上也会出现相同的 Exception
。如果 MBean 服务器方法(或尝试对它的调用)生成了 Error
,则该 Error
将包装在 JMXServerErrorException
中,从客户端能够看到该错误。
调用该方法等效于调用 getMBeanServerConnection(null)
,这意味着未指定任何委托主题并且在 MBeanServerConnection
上调用的所有操作必须使用经验证的主题(如果有)。
MBeanServerConnection
接口的对象。
IOException
- 如果无法创建有效的
MBeanServerConnection
,例如,由于尚未建立到远程 MBean 服务器的连接(用
connect
方法),或者连接已关闭,或者连接已断开。
MBeanServerConnection getMBeanServerConnection(Subject delegationSubject) throws IOException
返回 MBeanServerConnection
对象,它表示在其上执行代表提供的委托主题操作的远程 MBean 服务器。对于给定的 JMXConnector
和 Subject
,对此方法两次成功的调用通常将返回相同的 MBeanServerConnection
对象,尽管不需要这样做。
对于返回的 MBeanServerConnection
中的每个方法,调用此方法导致调用代表给定委托主题,而不是经验证主题的远程 MBean 服务器上的对应方法。MBean 服务器方法返回的值就是返回给客户端的值。如果 MBean 服务器方法生成了 Exception
,则客户端上也会出现相同的 Exception
。如果 MBean 服务器方法(或尝试对它的调用)生成了 Error
,则该 Error
将包装在 JMXServerErrorException
中,从客户端能够看到该错误。
delegationSubject
- 代表将执行何种请求的
Subject
。可以为 null,这种情况下执行请求表示经验证的 Subject(如果有)。
MBeanServerConnection
接口的对象。
IOException
- 如果无法创建有效的
MBeanServerConnection
,例如,由于尚未建立到远程 MBean 服务器的连接(用
connect
方法),或者连接已关闭,或者连接已断开。
void close() throws IOException
关闭客户端到其服务器的连接。任何正在进行中的或新的使用由 getMBeanServerConnection()
返回的 MBeanServerConnection 的请求将获得一个 IOException
。
如果已在该对象上成功调用了 close
,则再次调用将没有任何作用。如果从未调用过 close
,或者调用过但生成了异常,则将尝试关闭该连接。此尝试可能成功,此时 close
将正常返回,也可能生成一个异常。
关闭连接是一个潜在的慢操作。例如,假设服务器已崩溃,则关闭操作可能不得不等待网络协议超时。不希望关闭操作出现阻塞的调用者应在单独的线程中处理关闭。
IOException
- 如果无法完全关闭连接。如果抛出此异常,连接的服务器端是否已完全关闭为未知。
void addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个接收连接状态改变的侦听器。该侦听器将接收 JMXConnectionNotification
类型的通知。实现也可发送任何其他类型的通知。
使用此方法可添加任意个数的侦听器。相同的侦听器可使用相同或不同的 filter 和 handback 值多次添加。不对重复的条目进行任何特殊处理。例如,假设侦听器两次注册均为不带 filter,则将为每个通知调用两次其 handleNotification
方法。
listener
- 用于接收连接状态通知的侦听器。
filter
- 用于选择要发送给侦听器的通知的过滤器,如果将发送所有的通知,则为 null。
handback
- 将随每个通知提供给侦听器的对象。可以为 null。
NullPointerException
- 如果
listener
为 null。
removeConnectionNotificationListener(javax.management.NotificationListener)
,
NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
void removeConnectionNotificationListener(NotificationListener listener) throws ListenerNotFoundException
将一个用于接收状态更改通知的侦听器从列表中移除。此侦听器必须在以前已经添加。如果有多个匹配的侦听器,则移除所有匹配的侦听器。
listener
- 用于接收连接状态通知的侦听器。
NullPointerException
- 如果
listener
为 null。
ListenerNotFoundException
- 如果侦听器未用此
JMXConnector
注册。
removeConnectionNotificationListener(NotificationListener, NotificationFilter, Object)
,
addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,
NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
void removeConnectionNotificationListener(NotificationListener l, NotificationFilter f, Object handback) throws ListenerNotFoundException
将一个用于接收状态更改通知的侦听器从列表中移除。该侦听器必须在以前已经用相同的三个参数添加。如果有多个匹配的侦听器,则只移除一个匹配的侦听器。
l
- 用于接收连接状态通知的侦听器。
f
- 用于选择发送给侦听器通知的过滤器。可以为 null。
handback
- 将随每个通知提供给侦听器的对象。可以为 null。
ListenerNotFoundException
- 如果侦听器未用此
JMXConnector
注册,或者未用给定的 filter 和 handback 注册。
removeConnectionNotificationListener(NotificationListener)
,
addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,
NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
String getConnectionId() throws IOException
获得来自连接器服务器的连接 ID。对于给定的连接器服务器,每个连接将具有一个在连接的整个生命周期中都不改变的唯一 ID。
JMXConnectionNotification
中的 ID 相同。
package description
描述了连接 ID 的约定。
IOException
- 如果无法获得连接 ID,例如在连接关闭或断开的情况下。