JavaTM Platform
Standard Ed. 6

javax.management.remote.rmi
类 RMIConnector

java.lang.Object
  继承者 javax.management.remote.rmi.RMIConnector
所有已实现的接口:
Closeable, Serializable, JMXAddressable, JMXConnector

public class RMIConnector
     
extends Object
implements JMXConnector, Serializable, JMXAddressable

一个到远程 RMI 连接器的连接。通常使用 JMXConnectorFactory 建立这样的连接。但是,专门的应用程序可直接使用此类,例如获得 RMIServer 桩模块 (stub) 则不需要通过 JNDI。

从以下版本开始:
1.5
另请参见:
序列化表格

字段摘要
 
从接口 javax.management.remote.JMXConnector 继承的字段
CREDENTIALS
 
构造方法摘要
RMIConnector(JMXServiceURL url, Map<String,?> environment)
          构造一个将 RMI 连接器服务器连接到给定地址的 RMIConnector
RMIConnector(RMIServer rmiServer, Map<String,?> environment)
          用给定的 RMI stub 构造一个 RMIConnector
 
方法摘要
 void addConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          添加一个接收连接状态改变的侦听器。
 void close()
          关闭客户端到其服务器的连接。
 void connect()
          建立到连接器服务器的连接。
 void connect(Map<String,?> environment)
          建立到连接器服务器的连接。
 JMXServiceURL getAddress()
          此连接器的地址。
 String getConnectionId()
          获得来自连接器服务器的连接 ID。
 MBeanServerConnection getMBeanServerConnection()
          返回一个代表远程 MBean 服务器的 MBeanServerConnection 对象。
 MBeanServerConnection getMBeanServerConnection(Subject delegationSubject)
          返回 MBeanServerConnection 对象,它表示在其上执行代表提供的委托主题操作的远程 MBean 服务器。
 void removeConnectionNotificationListener(NotificationListener listener)
          将一个用于接收状态更改通知的侦听器从列表中移除。
 void removeConnectionNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          将一个用于接收状态更改通知的侦听器从列表中移除。
 String toString()
          返回此对象的字符串表示形式。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

RMIConnector

public RMIConnector(JMXServiceURL url,
                    Map<String,?> environment)

构造一个将 RMI 连接器服务器连接到给定地址的 RMIConnector

地址可直接引用连接器服务器,可使用如下语法之一:

 service:jmx:rmi://[host[:port]]/stub/encoded-stub
 service:jmx:iiop://[host[:port]]/ior/encoded-IOR
 

(这里的方括号 [] 不属于地址的组成部分,只表示主机和端口为可选项)。

地址还可表示使用 JNDI 查找 RMI stub 的位置,使用如下语法之一:

 service:jmx:rmi://[host[:port]]/jndi/jndi-name
 service:jmx:iiop://[host[:port]]/jndi/jndi-name
 

实现还可识别其他地址语法,如下所示:

 service:jmx:iiop://[host[:port]]/stub/encoded-stub
 

参数:
url - RMI 连接器服务器的地址。
environment - 指定如何进行连接的其他属性。对于基于 JNDI 的地址,这些属性可有效地包含可由 InitialContext 识别的 JNDI 属性。此参数可以为 null,它等效于一个空映射。
抛出:
IllegalArgumentException - 如果 url 为 null。

RMIConnector

public RMIConnector(RMIServer rmiServer,
                    Map<String,?> environment)

用给定的 RMI stub 构造一个 RMIConnector

参数:
rmiServer - 代表 RMI 连接器服务器的一个 RMI 桩模块。
environment - 指定如何进行连接的其他属性。此参数可以为 null,其等效于一个空映射。
抛出:
IllegalArgumentException - 如果 rmiServer 为 null。
方法详细信息

toString

public String toString()

返回此对象的字符串表示形式。通常,toString 方法会返回一个“按文本方式表示”此对象的字符串。结果应是一个简明而丰富的表示形式,以方便人们阅读。

覆盖:
Object 中的 toString
返回:
此对象的字符串表示形式。

getAddress

public JMXServiceURL getAddress()

此连接器的地址。

指定者:
接口 JMXAddressable 中的 getAddress
返回:
此连接器的地址;如果没有任何地址,则返回 null。
从以下版本开始:
1.6

connect

public void connect()
             throws IOException
从接口 JMXConnector 复制的描述

建立到连接器服务器的连接。此方法等效于 connect(null)

指定者:
接口 JMXConnector 中的 connect
抛出:
IOException - 如果由于存在通信问题而导致无法建立连接。

connect

public void connect(Map<String,?> environment)
             throws IOException
从接口 JMXConnector 复制的描述

建立到连接器服务器的连接。

如果已在该对象上成功调用了 connect,则再次调用将没有任何作用。但是,如果 JMXConnector.close() 是在调用 connect 之后调用的,则新的 connect 将抛出 IOException

否则,在此对象上未调用过任何一个 connect,或者虽然调用过但生成了一个异常。然后对 connect 的调用将试图建立到连接器服务器的连接。

指定者:
接口 JMXConnector 中的 connect
参数:
environment - 连接的属性。此映射中的属性重写创建 JMXConnector 时指定的映射中的属性(如果有)。此参数可以为 null,其等效于一个空映射。
抛出:
IOException - 如果由于存在通信问题而导致无法建立连接。

getConnectionId

public String getConnectionId()
                       throws IOException
从接口 JMXConnector 复制的描述

获得来自连接器服务器的连接 ID。对于给定的连接器服务器,每个连接将具有一个在连接的整个生命周期中都不改变的唯一 ID。

指定者:
接口 JMXConnector 中的 getConnectionId
返回:
此连接的唯一 ID。这与连接器服务器包含在其 JMXConnectionNotification 中的 ID 相同。 package description 描述了连接 ID 的约定。
抛出:
IOException - 如果无法获得连接 ID,例如在连接关闭或断开的情况下。

getMBeanServerConnection

public MBeanServerConnection getMBeanServerConnection()
                                               throws IOException
从接口 JMXConnector 复制的描述

返回一个代表远程 MBean 服务器的 MBeanServerConnection 对象。对于给定的 JMXConnector,对此方法两次成功的调用通常将返回相同的 MBeanServerConnection 对象,尽管不需要这样做。

对于返回的 MBeanServerConnection 中的每个方法,调用该方法将导致调用远程 MBean 服务器中的相应方法。MBean 服务器方法返回的值就是返回给客户端的值。如果 MBean 服务器方法生成了 Exception,则客户端上也会出现相同的 Exception。如果 MBean 服务器方法(或尝试对它的调用)生成了 Error,则该 Error 将包装在 JMXServerErrorException 中,从客户端能够看到该错误。

调用该方法等效于调用 getMBeanServerConnection(null),这意味着未指定任何委托主题并且在 MBeanServerConnection 上调用的所有操作必须使用经验证的主题(如果有)。

指定者:
接口 JMXConnector 中的 getMBeanServerConnection
返回:
一个通过将其方法转发到远程 MBean 服务器而实现 MBeanServerConnection 接口的对象。
抛出:
IOException - 如果无法创建有效的 MBeanServerConnection,例如,由于尚未建立到远程 MBean 服务器的连接(用 connect 方法),或者连接已关闭,或者连接已断开。

getMBeanServerConnection

public MBeanServerConnection getMBeanServerConnection(Subject delegationSubject)
                                               throws IOException
从接口 JMXConnector 复制的描述

返回 MBeanServerConnection 对象,它表示在其上执行代表提供的委托主题操作的远程 MBean 服务器。对于给定的 JMXConnectorSubject,对此方法两次成功的调用通常将返回相同的 MBeanServerConnection 对象,尽管不需要这样做。

对于返回的 MBeanServerConnection 中的每个方法,调用此方法导致调用代表给定委托主题,而不是经验证主题的远程 MBean 服务器上的对应方法。MBean 服务器方法返回的值就是返回给客户端的值。如果 MBean 服务器方法生成了 Exception,则客户端上也会出现相同的 Exception。如果 MBean 服务器方法(或尝试对它的调用)生成了 Error,则该 Error 将包装在 JMXServerErrorException 中,从客户端能够看到该错误。

指定者:
接口 JMXConnector 中的 getMBeanServerConnection
参数:
delegationSubject - 代表将执行何种请求的 Subject。可以为 null,这种情况下执行请求表示经验证的 Subject(如果有)。
返回:
一个通过将其方法转发到代表给定委托主题的远程 MBean 服务器而实现 MBeanServerConnection 接口的对象。
抛出:
IOException - 如果无法创建有效的 MBeanServerConnection,例如,由于尚未建立到远程 MBean 服务器的连接(用 connect 方法),或者连接已关闭,或者连接已断开。

addConnectionNotificationListener

public void addConnectionNotificationListener(NotificationListener listener,
                                              NotificationFilter filter,
                                              Object handback)
从接口 JMXConnector 复制的描述

添加一个接收连接状态改变的侦听器。该侦听器将接收 JMXConnectionNotification 类型的通知。实现也可发送任何其他类型的通知。

使用此方法可添加任意个数的侦听器。相同的侦听器可使用相同或不同的 filter 和 handback 值多次添加。不对重复的条目进行任何特殊处理。例如,假设侦听器两次注册均为不带 filter,则将为每个通知调用两次其 handleNotification 方法。

指定者:
接口 JMXConnector 中的 addConnectionNotificationListener
参数:
listener - 用于接收连接状态通知的侦听器。
filter - 用于选择要发送给侦听器的通知的过滤器,如果将发送所有的通知,则为 null。
handback - 将随每个通知提供给侦听器的对象。可以为 null。
另请参见:
JMXConnector.removeConnectionNotificationListener(javax.management.NotificationListener), NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

removeConnectionNotificationListener

public void removeConnectionNotificationListener(NotificationListener listener)
                                          throws ListenerNotFoundException
从接口 JMXConnector 复制的描述

将一个用于接收状态更改通知的侦听器从列表中移除。此侦听器必须在以前已经添加。如果有多个匹配的侦听器,则移除所有匹配的侦听器。

指定者:
接口 JMXConnector 中的 removeConnectionNotificationListener
参数:
listener - 用于接收连接状态通知的侦听器。
抛出:
ListenerNotFoundException - 如果侦听器未用此 JMXConnector 注册。
另请参见:
JMXConnector.removeConnectionNotificationListener(NotificationListener, NotificationFilter, Object), JMXConnector.addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object), NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

removeConnectionNotificationListener

public void removeConnectionNotificationListener(NotificationListener listener,
                                                 NotificationFilter filter,
                                                 Object handback)
                                          throws ListenerNotFoundException
从接口 JMXConnector 复制的描述

将一个用于接收状态更改通知的侦听器从列表中移除。该侦听器必须在以前已经用相同的三个参数添加。如果有多个匹配的侦听器,则只移除一个匹配的侦听器。

指定者:
接口 JMXConnector 中的 removeConnectionNotificationListener
参数:
listener - 用于接收连接状态通知的侦听器。
filter - 用于选择发送给侦听器通知的过滤器。可以为 null。
handback - 将随每个通知提供给侦听器的对象。可以为 null。
抛出:
ListenerNotFoundException - 如果侦听器未用此 JMXConnector 注册,或者未用给定的 filter 和 handback 注册。
另请参见:
JMXConnector.removeConnectionNotificationListener(NotificationListener), JMXConnector.addConnectionNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object), NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

close

public void close()
           throws IOException
从接口 JMXConnector 复制的描述

关闭客户端到其服务器的连接。任何正在进行中的或新的使用由 JMXConnector.getMBeanServerConnection() 返回的 MBeanServerConnection 的请求将获得一个 IOException

如果已在该对象上成功调用了 close,则再次调用将没有任何作用。如果从未调用过 close,或者调用过但生成了异常,则将尝试关闭该连接。此尝试可能成功,此时 close 将正常返回,也可能生成一个异常。

关闭连接是一个潜在的慢操作。例如,假设服务器已崩溃,则关闭操作可能不得不等待网络协议超时。不希望关闭操作出现阻塞的调用者应在单独的线程中处理关闭。

指定者:
接口 Closeable 中的 close
指定者:
接口 JMXConnector 中的 close
抛出:
IOException - 如果无法完全关闭连接。如果抛出此异常,连接的服务器端是否已完全关闭为未知。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策