public interface JMXConnector extends Closeable
JMX API连接器的客户端。 此类型的对象可用于建立与连接器服务器的连接。
这种类型的新创建的对象是未连接的。 其connect
方法必须先被调用才能使用。 但是,由JMXConnectorFactory.connect
创建的对象已经连接。
Modifier and Type | Field and Description |
---|---|
static String |
CREDENTIALS
指定在连接期间发送到连接器服务器的凭据的属性的名称。
|
Modifier and Type | Method and Description |
---|---|
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服务器方法生成异常
,客户端可以看到相同的异常
。 如果MBean服务器方法,或者试图调用它,产生Error
,所述Error
被包裹在一个JMXServerErrorException
,其由客户端可见。
调用此方法相当于调用getMBeanServerConnection(null)
,这意味着没有指定委托主体,并且所有在MBeanServerConnection上调用的MBeanServerConnection
都必须使用经过身份验证的主题(如果有)。
MBeanServerConnection
接口的对象。
IOException
- 如果无法创建有效的
MBeanServerConnection
,例如因为尚未建立与远程MBean服务器的连接(使用
connect
方法)或已关闭或已断开连接。
MBeanServerConnection getMBeanServerConnection(Subject delegationSubject) throws IOException
返回MBeanServerConnection
表示在其上操作的代表提供的委托主题操作的远程MBean服务器对象。 对于给定的JMXConnector
和Subject
,两个成功调用此方法通常会返回相同的MBeanServerConnection
对象,尽管这不是必需的。
对于返回的MBeanServerConnection
中的每个方法,调用该方法将导致在远程MBean服务器中代表给定的授权对象而不是经过身份验证的主题调用相应的方法。 MBean服务器方法返回的值是返回给客户端的值。 如果MBean服务器方法产生一个异常
,则客户端看到相同的异常
。 如果MBean服务器方法,或者试图调用它,产生Error
,所述Error
被包裹在一个JMXServerErrorException
,其由客户端可见。
delegationSubject
-在Subject
以其名义请求将被执行。
可以为null,在这种情况下,将代表被认证的主题(如果有的话)执行请求。
MBeanServerConnection
通过将其方法转发到远程MBean服务器代表一给定委托主题的接口。
IOException
- 如果无法创建有效的
MBeanServerConnection
,例如因为与远程MBean服务器的连接尚未建立(使用
connect
方法)或已关闭或已断开连接。
void close() throws IOException
关闭与其服务器的客户端连接。 使用由getMBeanServerConnection()
返回的MBeanServerConnection的任何持续或新请求将获得IOException
。
如果close
已经在此对象上成功调用,则再次调用它不起作用。 如果close
从未被调用,或者如果它被调用但产生异常,将尝试关闭连接。 这个尝试可以成功,在这种情况下, close
将正常返回,否则可能会产生异常。
关闭连接是一个潜在的慢操作。 例如,如果服务器崩溃,则关闭操作可能需要等待网络协议超时。 不想封闭操作的调用者应该在单独的线程中执行。
close
在接口
AutoCloseable
close
在接口
Closeable
IOException
- 如果连接不能被干净地关闭。
如果抛出此异常,则不知道连接的服务器端是否已完全关闭。
void addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个监听器以通知连接状态的变化。 收听者将收到JMXConnectionNotification
类型的通知 。 一个实现也可以发送其他类型的通知。
可以使用此方法添加任意数量的侦听器。 可以使用相同或不同的过滤器和回传值,多次添加相同的侦听器。 重复条目没有特殊处理。 例如,如果一个监听器被注册两次,没有过滤器,那么它的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
为空。
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
,或未注册给定过滤器和回传。
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,例如因为连接被关闭或断开。