javax.management.remote.rmi

接口
java.lang.Object
  继承者 javax.management.NotificationBroadcasterSupport
      继承者 javax.management.remote.JMXConnectorServer
          继承者 javax.management.remote.rmi.RMIConnectorServer
所有已实现的接口:
MBeanRegistration, NotificationBroadcaster, NotificationEmitter, JMXAddressable, JMXConnectorServerMBean

public class RMIConnectorServer
     
extends JMXConnectorServer

JMX API 连接器服务器,用于从远程客户端创建基于 RMI 的连接。通常情况下,使用 JMXConnectorServerFactory 建立这样的连接器服务器。但是,专门的应用程序可直接使用此类,例如使用 RMIServerImpl 对象。

从以下版本开始:
1.5

字段摘要
static String JNDI_REBIND_ATTRIBUTE
          属性名称,它指定代表 RMI 连接器服务器的 RMIServer stub 是否应重写位于同一地址的现有 stub。
static String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
          属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIClientSocketFactory
static String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
          属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIServerSocketFactory
 
从类 javax.management.remote.JMXConnectorServer 继承的字段
AUTHENTICATOR
 
构造方法摘要
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment)
          建立 RMIConnectorServer
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer)
          为给定的 MBean 服务器建立一个 RMIConnectorServer
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer)
          为给定的 MBean 服务器建立一个 RMIConnectorServer
 
方法摘要
protected  void connectionClosed(String connectionId, String message, Object userData)
          正常关闭客户端连接时由子类调用。
protected  void connectionFailed(String connectionId, String message, Object userData)
          客户端连接失败时由子类调用。
protected  void connectionOpened(String connectionId, String message, Object userData)
          打开新的客户端连接时由子类调用。
 JMXServiceURL getAddress()
          该连接器服务器的地址。
 Map<String,?> getAttributes()
          此连接器服务器的属性。
 boolean isActive()
          确定连接器服务器是否活动。
 void setMBeanServerForwarder(MBeanServerForwarder mbsf)
          添加一个截取对 MBean 服务器请求的对象,该请求是通过此连接器服务器到达的。
 void start()
          激活连接器服务器,即启动对客户端连接的侦听。
 void stop()
          取消激活连接器服务器,即停止对客户端连接的侦听。
 JMXConnector toJMXConnector(Map<String,?> env)
          返回此连接器服务器的客户端 stub。
 
从类 javax.management.remote.JMXConnectorServer 继承的方法
getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister
 
从类 javax.management.NotificationBroadcasterSupport 继承的方法
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

JNDI_REBIND_ATTRIBUTE

public static final String JNDI_REBIND_ATTRIBUTE

属性名称,它指定代表 RMI 连接器服务器的 RMIServer stub 是否应重写位于同一地址的现有 stub。与此属性关联的值(如果有)应为与 "true""false" 相等(忽略大小写)的字符串。默认值为 false。

另请参见:
常量字段值

RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIClientSocketFactory。与此属性关联的值的类型必须为 RMIClientSocketFactory,并且只能在创建连接器服务器时提供的 Map 参数中指定。

另请参见:
常量字段值

RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIServerSocketFactory。与此属性关联的值的类型必须为 RMIServerSocketFactory,并且只能在创建连接器服务器时提供的 Map 参数中指定。

另请参见:
常量字段值
构造方法详细信息

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment)
                   throws IOException

建立 RMIConnectorServer。此方法与调用 RMIConnectorServer(directoryURL,environment,null,null) 具有相同的效果。

参数:
url - 一个定义如何创建连接器服务器的 URL。不能为 null。
environment - 控制着 RMI 对象的创建和存储的属性。可以为 null,它等效于一个空映射。
抛出:
IllegalArgumentException - 如果 url 为 null。
MalformedURLException - 如果 url 不符合 RMI 连接器的语法,或者其协议不能由此实现识别。使用此构造方法时,只有 "rmi" 和 "iiop" 为有效的。
IOException - 如果出于某种原因无法创建连接器服务器,或者其 start 方法不可避免地失败。

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment,
                          MBeanServer mbeanServer)
                   throws IOException

为给定的 MBean 服务器建立一个 RMIConnectorServer。此方法与调用 RMIConnectorServer(directoryURL,environment,null,mbeanServer) 具有相同的效果。

参数:
url - 一个定义如何创建连接器服务器的 URL。不能为 null。
environment - 控制着 RMI 对象的创建和存储的属性。可以为 null,它等效于一个空映射。
mbeanServer - 新的连接器服务器将与其连接的 MBean 服务器,或者如果它将通过注册为 MBean 服务器中的一个 MBean 进行连接,则为 null。
抛出:
IllegalArgumentException - 如果 url 为 null。
MalformedURLException - 如果 url 不符合 RMI 连接器的语法,或者其协议不能由此实现识别。使用此构造方法时,只有 "rmi" 和 "iiop" 为有效的。
IOException - 如果出于某种原因无法创建连接器服务器,或者其 start 方法不可避免地失败。

RMIConnectorServer

public RMIConnectorServer(JMXServiceURL url,
                          Map<String,?> environment,
                          RMIServerImpl rmiServerImpl,
                          MBeanServer mbeanServer)
                   throws IOException

为给定的 MBean 服务器建立一个 RMIConnectorServer

参数:
url - 一个定义如何创建连接器服务器的 URL。不能为 null。
environment - 控制着 RMI 对象的创建和存储的属性。可以为 null,它等效于一个空映射。
rmiServerImpl - RMIServer 接口的一个实现,与 url 中指定的协议类型一致。如果此参数为非 null,则 url 指定的协议类型没有约束,假定其为有效。否则,将只识别 "rmi" 和 "iiop"。
mbeanServer - 新的连接器服务器将与其连接的 MBean 服务器,或者如果它将通过注册为 MBean 服务器中的一个 MBean 进行连接,则为 null。
抛出:
IllegalArgumentException - 如果 url 为 null。
MalformedURLException - 如果 url 不符合 RMI 连接器的语法,或者其协议不能由此实现识别。在 rmiServerImpl 为 null 时,只能识别 "rmi" 和 "iiop"。
IOException - 如果出于某种原因无法创建连接器服务器,或者其 start 方法不可避免地失败。
另请参见:
start()
方法详细信息

toJMXConnector

public JMXConnector toJMXConnector(Map<String,?> env)
                            throws IOException

返回此连接器服务器的客户端 stub。客户端 stub 为一个可序列化的对象,其 connect 方法可用于建立一个到此连接器服务器的新连接。

指定者:
接口 JMXConnectorServerMBean 中的 toJMXConnector
覆盖:
JMXConnectorServer 中的 toJMXConnector
参数:
env - 客户端连接参数,与提供给 JMXConnector.connect(Map) 的参数具有相同的类型。可以为 null,它等效于一个空映射。
返回:
可用于建立到此连接器服务器的新连接的客户端 stub。
抛出:
UnsupportedOperationException - 如果此连接器服务器不支持生成客户端 stub。
IllegalStateException - 如果未启动 JMXConnectorServer(请参阅 isActive())。
IOException - 如果存在通信问题而导致无法创建 stub。

start

public void start()
           throws IOException

激活连接器服务器,即启动对客户端连接的侦听。在连接器服务器已激活时,调用此方法没有任何作用。在连接器服务器已停止时,调用此方法将生成 IOException

此方法第一次调用时的行为取决于构造时提供的如下所示的参数。

首先,需要一个 RMIServerImpl 的子类的对象,以便将连接器服务器从 RMI 导出:

  • 如果原先为构造方法提供了一个 RMIServerImpl,则使用该值。
  • 否则,如果为构造方法提供的 JMXServiceURL 的协议部分为 iiop,则创建一个 RMIIIOPServerImpl 类型的对象。
  • 否则,如果 JMXServiceURL 为 null,或者其协议部分为 rmi,则创建一个类型为 RMIJRMPServerImpl 的对象。
  • 否则,此实现可能创建一个特定于实现的 RMIServerImpl,或者抛出 MalformedURLException

如果给定的地址包含一个 JNDI 目录 URL(如在 javax.management.remote.rmi 的包文档中的指定),则该 RMIConnectorServer 通过将 RMIServerImpl 绑定到给定地址进行引导。

如果 JMXServiceURL 的 URL 路径部分为空或一个单独的斜线 (/),则 RMI 对象将不会绑定到一个目录。相反,RMIConnectorServer 地址(由 getAddress() 返回)的 URL 路径中将包含一个对它的引用的编码。javax.management.remote.rmi 的包文档中有对 rmiiiop 的编码的描述。

当 URL 路径既不为空又不是一个 JNDI 目录 URL,或者当协议既不是 rmi 又不是 iiop 时的行为由实现定义,并且在创建或启动连接器服务器时可能包含抛出 MalformedURLException 的行为。

抛出:
IllegalStateException - 如果此连接器服务器尚未连接到 MBean 服务器。
IOException - 如果连接器服务器无法启动。

stop

public void stop()
          throws IOException

取消激活连接器服务器,即停止对客户端连接的侦听。调用此方法还将关闭所有由此服务器建立的客户端连接。返回此方法后,无论正常返回还是抛出异常,连接器服务器都不再创建任何新的客户端连接。

连接器服务器一旦停止就无法再启动。

在连接器服务器已停止时,调用此方法没有任何效果。在连接器服务器尚未启动时调用此方法将永久禁用连接器服务器对象。

如果关闭客户端连接导致异常,则该异常不会从此方法抛出。而会从 MBean 发出一个 JMXConnectionNotification,同时显示无法关闭的连接的连接 ID。

关闭连接器服务器是一个潜在的慢操作。例如,如果具有打开连接的客户端发生崩溃,则关闭操作不得不等待网络协议超时。不希望关闭操作出现阻塞的调用者应在单独的线程中处理关闭。

此方法在连接器服务器的 RMIServerImpl 对象上调用 close 方法。

如果 RMIServerImplstart 方法绑定到 JNDI 目录,则该方法可解除到目录的绑定。

抛出:
IOException - 如果无法完全关闭服务器,或者如果无法从目录解除 RMIServerImpl 的绑定。抛出此异常时,服务器已经尝试适当地关闭所有的客户端连接、调用 RMIServerImpl.close() 并解除 RMIServerImpl 到其目录的绑定。除了那些服务器尝试将它们关闭时生成异常的连接,所有的客户端连接都被关闭。

isActive

public boolean isActive()
从接口 JMXConnectorServerMBean 复制的描述

确定连接器服务器是否活动。当连接器服务器的 start 方法成功返回时,此连接器服务器即进入活动状态,并一直保持活动状态直到调用其 stop 方法或连接器服务器失败。

返回:
如果该连接器服务器为活动的,则返回 true。

getAddress

public JMXServiceURL getAddress()
从接口 JMXConnectorServerMBean 复制的描述

该连接器服务器的地址。

返回:
该连接器服务器的地址,或者如果没有任何地址,则返回 null。

getAttributes

public Map<String,?> getAttributes()
从接口 JMXConnectorServerMBean 复制的描述

此连接器服务器的属性。

返回:
包含该连接器服务器的属性的一个只读映射。该映射中忽略了其值不可序列化的属性。如果没有可序列化的属性,则返回的映射为空。

setMBeanServerForwarder

public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
从接口 JMXConnectorServerMBean 复制的描述

添加一个截取对 MBean 服务器请求的对象,该请求是通过此连接器服务器到达的。此对象将作为任何由此连接器服务器创建的新连接的 MBeanServer 提供。现有连接不受影响。

如果此连接器服务器已与一个 MBeanServer 对象关联,则将该对象提供给 mbsf.setMBeanServer。如果这样做生成异常,则该方法抛出相同的异常,没有任何其他作用。

如果此连接器尚未与一个 MBeanServer 对象关联,或者如果刚才提到的 mbsf.setMBeanServer 调用成功,则 mbsf 成为该连接器服务器的 MBeanServer

指定者:
接口 JMXConnectorServerMBean 中的 setMBeanServerForwarder
覆盖:
JMXConnectorServer 中的 setMBeanServerForwarder
参数:
mbsf - 新的 MBeanServerForwarder

connectionOpened

protected void connectionOpened(String connectionId,
                                String message,
                                Object userData)
从类 JMXConnectorServer 复制的描述

打开新的客户端连接时由子类调用。将由 JMXConnectorServer.getConnectionIds() 返回的 connectionId 添加到列表中,然后发出一个类型为 JMXConnectionNotification.OPENEDJMXConnectionNotification

覆盖:
JMXConnectorServer 中的 connectionOpened
参数:
connectionId - 新连接的 ID。它必须与任何由此连接器服务器先前打开的连接的 ID 不一样。
message - 发出的 JMXConnectionNotification 的消息。可以为 null。请参阅 Notification.getMessage()
userData - 发出的 JMXConnectionNotificationuserData。可以为 null。请参阅 Notification.getUserData()

connectionClosed

protected void connectionClosed(String connectionId,
                                String message,
                                Object userData)
从类 JMXConnectorServer 复制的描述

正常关闭客户端连接时由子类调用。从列表中移除由 JMXConnectorServer.getConnectionIds() 返回的 connectionId,然后发出一个类型为 JMXConnectionNotification.CLOSEDJMXConnectionNotification

覆盖:
JMXConnectorServer 中的 connectionClosed
参数:
connectionId - 已关闭连接的 ID。
message - 发出的 JMXConnectionNotification 的消息。可以为 null。请参阅 Notification.getMessage()
userData - 发出的 JMXConnectionNotificationuserData。可以为 null。请参阅 Notification.getUserData()

connectionFailed

protected void connectionFailed(String connectionId,
                                String message,
                                Object userData)
从类 JMXConnectorServer 复制的描述

客户端连接失败时由子类调用。从列表中移除由 JMXConnectorServer.getConnectionIds() 返回的 connectionId,然后发出一个类型为 JMXConnectionNotification.FAILEDJMXConnectionNotification

覆盖:
JMXConnectorServer 中的 connectionFailed
参数:
connectionId - 失败连接的 ID。
message - 发出的 JMXConnectionNotification 的消息。可以为 null。请参阅 Notification.getMessage()
userData - 发出的 JMXConnectionNotificationuserData。可以为 null。请参阅 Notification.getUserData()