java.lang.Object javax.management.NotificationBroadcasterSupport javax.management.remote.JMXConnectorServer javax.management.remote.rmi.RMIConnectorServer
public class RMIConnectorServer
JMX API 连接器服务器,用于从远程客户端创建基于 RMI 的连接。通常情况下,使用 JMXConnectorServerFactory
建立这样的连接器服务器。但是,专门的应用程序可直接使用此类,例如使用 RMIServerImpl
对象。
字段摘要 | |
---|---|
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 |
字段详细信息 |
---|
public static final String JNDI_REBIND_ATTRIBUTE
属性名称,它指定代表 RMI 连接器服务器的 RMIServer
stub 是否应重写位于同一地址的现有 stub。与此属性关联的值(如果有)应为与 "true"
或 "false"
相等(忽略大小写)的字符串。默认值为 false。
public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIClientSocketFactory
。与此属性关联的值的类型必须为 RMIClientSocketFactory
,并且只能在创建连接器服务器时提供的 Map
参数中指定。
public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
属性名称,它指定了与此连接器一起创建的 RMI 对象的 RMIServerSocketFactory
。与此属性关联的值的类型必须为 RMIServerSocketFactory
,并且只能在创建连接器服务器时提供的 Map
参数中指定。
构造方法详细信息 |
---|
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
方法不可避免地失败。
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
方法不可避免地失败。
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()
方法详细信息 |
---|
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
返回此连接器服务器的客户端 stub。客户端 stub 为一个可序列化的对象,其 connect
方法可用于建立一个到此连接器服务器的新连接。
JMXConnectorServerMBean
中的
toJMXConnector
JMXConnectorServer
中的
toJMXConnector
env
- 客户端连接参数,与提供给
JMXConnector.connect(Map)
的参数具有相同的类型。可以为 null,它等效于一个空映射。
UnsupportedOperationException
- 如果此连接器服务器不支持生成客户端 stub。
IllegalStateException
- 如果未启动 JMXConnectorServer(请参阅
isActive()
)。
IOException
- 如果存在通信问题而导致无法创建 stub。
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
的包文档中有对 rmi
和 iiop
的编码的描述。
当 URL 路径既不为空又不是一个 JNDI 目录 URL,或者当协议既不是 rmi
又不是 iiop
时的行为由实现定义,并且在创建或启动连接器服务器时可能包含抛出 MalformedURLException
的行为。
IllegalStateException
- 如果此连接器服务器尚未连接到 MBean 服务器。
IOException
- 如果连接器服务器无法启动。
public void stop() throws IOException
取消激活连接器服务器,即停止对客户端连接的侦听。调用此方法还将关闭所有由此服务器建立的客户端连接。返回此方法后,无论正常返回还是抛出异常,连接器服务器都不再创建任何新的客户端连接。
连接器服务器一旦停止就无法再启动。
在连接器服务器已停止时,调用此方法没有任何效果。在连接器服务器尚未启动时调用此方法将永久禁用连接器服务器对象。
如果关闭客户端连接导致异常,则该异常不会从此方法抛出。而会从 MBean 发出一个 JMXConnectionNotification
,同时显示无法关闭的连接的连接 ID。
关闭连接器服务器是一个潜在的慢操作。例如,如果具有打开连接的客户端发生崩溃,则关闭操作不得不等待网络协议超时。不希望关闭操作出现阻塞的调用者应在单独的线程中处理关闭。
此方法在连接器服务器的 RMIServerImpl
对象上调用 close
方法。
如果 RMIServerImpl
由 start
方法绑定到 JNDI 目录,则该方法可解除到目录的绑定。
IOException
- 如果无法完全关闭服务器,或者如果无法从目录解除
RMIServerImpl
的绑定。抛出此异常时,服务器已经尝试适当地关闭所有的客户端连接、调用
RMIServerImpl.close()
并解除
RMIServerImpl
到其目录的绑定。除了那些服务器尝试将它们关闭时生成异常的连接,所有的客户端连接都被关闭。
public boolean isActive()
JMXConnectorServerMBean
复制的描述
确定连接器服务器是否活动。当连接器服务器的 start
方法成功返回时,此连接器服务器即进入活动状态,并一直保持活动状态直到调用其 stop
方法或连接器服务器失败。
public JMXServiceURL getAddress()
JMXConnectorServerMBean
复制的描述
该连接器服务器的地址。
public Map<String,?> getAttributes()
JMXConnectorServerMBean
复制的描述
此连接器服务器的属性。
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
JMXConnectorServerMBean
复制的描述
添加一个截取对 MBean 服务器请求的对象,该请求是通过此连接器服务器到达的。此对象将作为任何由此连接器服务器创建的新连接的 MBeanServer
提供。现有连接不受影响。
如果此连接器服务器已与一个 MBeanServer
对象关联,则将该对象提供给 mbsf.setMBeanServer
。如果这样做生成异常,则该方法抛出相同的异常,没有任何其他作用。
如果此连接器尚未与一个 MBeanServer
对象关联,或者如果刚才提到的 mbsf.setMBeanServer
调用成功,则 mbsf
成为该连接器服务器的 MBeanServer
。
JMXConnectorServerMBean
中的
setMBeanServerForwarder
JMXConnectorServer
中的
setMBeanServerForwarder
mbsf
- 新的
MBeanServerForwarder
。
protected void connectionOpened(String connectionId, String message, Object userData)
JMXConnectorServer
复制的描述
打开新的客户端连接时由子类调用。将由 JMXConnectorServer.getConnectionIds()
返回的 connectionId
添加到列表中,然后发出一个类型为 JMXConnectionNotification.OPENED
的 JMXConnectionNotification
。
JMXConnectorServer
中的
connectionOpened
connectionId
- 新连接的 ID。它必须与任何由此连接器服务器先前打开的连接的 ID 不一样。
message
- 发出的
JMXConnectionNotification
的消息。可以为 null。请参阅
Notification.getMessage()
。
userData
- 发出的
JMXConnectionNotification
的
userData
。可以为 null。请参阅
Notification.getUserData()
。
protected void connectionClosed(String connectionId, String message, Object userData)
JMXConnectorServer
复制的描述
正常关闭客户端连接时由子类调用。从列表中移除由 JMXConnectorServer.getConnectionIds()
返回的 connectionId
,然后发出一个类型为 JMXConnectionNotification.CLOSED
的 JMXConnectionNotification
。
JMXConnectorServer
中的
connectionClosed
connectionId
- 已关闭连接的 ID。
message
- 发出的
JMXConnectionNotification
的消息。可以为 null。请参阅
Notification.getMessage()
。
userData
- 发出的
JMXConnectionNotification
的
userData
。可以为 null。请参阅
Notification.getUserData()
。
protected void connectionFailed(String connectionId, String message, Object userData)
JMXConnectorServer
复制的描述
客户端连接失败时由子类调用。从列表中移除由 JMXConnectorServer.getConnectionIds()
返回的 connectionId
,然后发出一个类型为 JMXConnectionNotification.FAILED
的 JMXConnectionNotification
。
JMXConnectorServer
中的
connectionFailed
connectionId
- 失败连接的 ID。
message
- 发出的
JMXConnectionNotification
的消息。可以为 null。请参阅
Notification.getMessage()
。
userData
- 发出的
JMXConnectionNotification
的
userData
。可以为 null。请参阅
Notification.getUserData()
。