- 所有已实现的接口:
MBeanRegistration
,NotificationBroadcaster
,NotificationEmitter
,JMXAddressable
,JMXConnectorServerMBean
- 已知子类:
RMIConnectorServer
每个连接器服务的超类。连接器服务附加到 MBean 服务。它监听客户端连接请求并为每个请求创建一个连接。
连接器服务与 MBean 服务相关联,方法是在 MBean 服务中注册它,或者将 MBean 服务传递给它的构造方法。
连接器服务在创建时处于非活动状态。它仅在调用 start
方法时才开始监听客户端连接。当调用 stop
方法或连接器服务从其 MBean 服务注销时,连接器服务将停止监听客户端连接。
停止连接器服务不会从其 MBean 服务中注销它。连接器服务一旦停止就无法重新启动。
每次建立或断开客户端连接时,都会发出 JMXConnectionNotification
类的通知。
- 自从:
- 1.5
-
字段摘要
字段 -
构造方法总结
构造方法构造方法描述构造一个连接器服务,该服务将在它附加到的 MBean 服务中注册为 MBean。JMXConnectorServer
(MBeanServer mbeanServer) 构造附加到给定 MBean 服务的连接器服务。 -
方法总结
修饰符和类型方法描述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) 当打开新的客户端连接时由子类调用。String[]
当前打开的与此连接器服务的连接的 ID 列表。返回此连接器服务附加到的 MBean 服务。返回一个数组,指示此 MBean 发送的通知。void
允许 MBean 在 MBean 服务中注销后执行所需的任何操作。void
postRegister
(Boolean registrationDone) 允许 MBean 在 MBean 服务中注册后或注册失败后执行所需的任何操作。void
当此连接器服务从 MBean 服务注销时由 MBean 服务调用。preRegister
(MBeanServer mbs, ObjectName name) 当此连接器服务在 MBean 服务中注册时由 MBean 服务调用。void
插入一个对象,该对象拦截通过此连接器服务到达的对 MBean 服务的请求。toJMXConnector
(Map<String, ?> env) 返回此连接器服务的客户端存根。在类 javax.management.NotificationBroadcasterSupport 中声明的方法
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
在类 java.lang.Object 中声明的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
在接口 javax.management.remote.JMXAddressable 中声明的方法
getAddress
在接口 javax.management.remote.JMXConnectorServerMBean 中声明的方法
getAddress, getAttributes, isActive, start, stop
-
字段详细信息
-
AUTHENTICATOR
指定连接器服务的身份验证器的属性的名称。与此属性关联的值(如果有)必须是实现接口
JMXAuthenticator
的对象。- 参见:
-
-
构造方法详细信息
-
JMXConnectorServer
public JMXConnectorServer()构造一个连接器服务,该服务将在它附加到的 MBean 服务中注册为 MBean。当在 MBean 服务中创建连接器服务使其远程可用时,此构造函数通常由
createMBean
方法之一调用。 -
JMXConnectorServer
构造附加到给定 MBean 服务的连接器服务。以这种方式创建的连接器服务可以在不同的 MBean 服务中注册,或者不在任何 MBean 服务中注册。
- 参数:
mbeanServer
- 此连接器服务附加到的 MBean 服务。如果此连接器服务将通过在其中注册而附加到 MBean 服务,则为空。
-
-
方法详情
-
getMBeanServer
返回此连接器服务附加到的 MBean 服务。
- 返回:
- 此连接器服务附加到的 MBean 服务,如果它尚未附加到 MBean 服务,则返回 null。
-
setMBeanServerForwarder
从接口JMXConnectorServerMBean
复制的描述插入一个对象,该对象拦截通过此连接器服务到达的对 MBean 服务的请求。对于由此连接器服务创建的任何新连接,此对象将作为
MBeanServer
提供。现有连接不受影响。可以使用不同的
MBeanServerForwarder
对象多次调用此方法。结果是一个转发器链。最后添加的转发器是链中的第一个。更详细地:如果此连接器服务已与
MBeanServer
对象相关联,则该对象将提供给mbsf.setMBeanServer
。如果这样做会产生异常,则此方法会抛出相同的异常而不会产生任何其他影响。如果此连接器尚未与
MBeanServer
对象相关联,或者如果刚才提到的mbsf.setMBeanServer
调用成功,则mbsf
成为此连接器服务的MBeanServer
。
- 指定者:
setMBeanServerForwarder
在接口JMXConnectorServerMBean
中- 参数:
mbsf
- 新的MBeanServerForwarder
。
-
getConnectionIds
从接口JMXConnectorServerMBean
复制的描述当前打开的与此连接器服务的连接的 ID 列表。
- 指定者:
getConnectionIds
在接口JMXConnectorServerMBean
中- 返回:
- 包含 ID 列表的新字符串数组。如果当前没有打开的连接,则此数组将为空。
-
toJMXConnector
返回此连接器服务的客户端存根。客户端存根是一个可序列化的对象,其
connect
方法可用于与此连接器服务建立新连接。给定的连接器不需要支持客户端存根的生成。但是,JMX Remote API 指定的连接器(JMXMP 连接器和 RMI 连接器)可以。
此方法的默认实现使用
JMXConnectorServerMBean.getAddress()
和JMXConnectorFactory
生成存根,代码等效于以下内容:JMXServiceURL addr =
getAddress()
; returnJMXConnectorFactory.newJMXConnector(addr, env)
;对此不合适的连接器服务必须覆盖此方法,以便它实现适当的逻辑或抛出
UnsupportedOperationException
。- 指定者:
toJMXConnector
在接口JMXConnectorServerMBean
中- 参数:
env
- 可以提供给JMXConnector.connect(Map)
的同类客户端连接参数。可以为null,相当于一个空map。- 返回:
- 可用于与此连接器服务建立新连接的客户端存根。
- 抛出:
UnsupportedOperationException
- 如果此连接器服务不支持生成客户端存根。IllegalStateException
- 如果 JMXConnectorServer 未启动(请参阅JMXConnectorServerMBean.isActive()
)。IOException
- 如果通信问题意味着无法创建存根。
-
getNotificationInfo
返回一个数组,指示此 MBean 发送的通知。
JMXConnectorServer
中的实现返回一个包含一个元素的数组,表明它可以使用该类中定义的类型发出类JMXConnectionNotification
的通知。可以发出其他通知的子类应该返回一个数组,其中包含此元素以及其他通知的描述。- 指定者:
getNotificationInfo
在接口NotificationBroadcaster
中- 返回:
- 可能通知的数组。
-
connectionOpened
当打开新的客户端连接时由子类调用。将
connectionId
添加到getConnectionIds()
返回的列表中,然后发出类型为JMXConnectionNotification.OPENED
的JMXConnectionNotification
。- 参数:
connectionId
- 新连接的 ID。这必须不同于此连接器服务先前打开的任何连接的 ID。message
- 发出的消息JMXConnectionNotification
。可以为空。参见Notification.getMessage()
。userData
- 发射的JMXConnectionNotification
的userData
。可以为空。参见Notification.getUserData()
。- 抛出:
NullPointerException
- 如果connectionId
为空。
-
connectionClosed
当客户端连接正常关闭时由子类调用。从
getConnectionIds()
返回的列表中删除connectionId
,然后发出类型为JMXConnectionNotification.CLOSED
的JMXConnectionNotification
。- 参数:
connectionId
- 已关闭连接的 ID。message
- 发出的消息JMXConnectionNotification
。可以为空。参见Notification.getMessage()
。userData
- 发射的JMXConnectionNotification
的userData
。可以为空。参见Notification.getUserData()
。- 抛出:
NullPointerException
- 如果connectionId
为空。
-
connectionFailed
当客户端连接失败时由子类调用。从
getConnectionIds()
返回的列表中删除connectionId
,然后发出类型为JMXConnectionNotification.FAILED
的JMXConnectionNotification
。- 参数:
connectionId
- 失败连接的 ID。message
- 发出的消息JMXConnectionNotification
。可以为空。参见Notification.getMessage()
。userData
- 发射的JMXConnectionNotification
的userData
。可以为空。参见Notification.getUserData()
。- 抛出:
NullPointerException
- 如果connectionId
为空。
-
preRegister
当此连接器服务在 MBean 服务中注册时由 MBean 服务调用。此连接器服务连接到 MBean 服务,其
getMBeanServer()
方法将返回mbs
。如果此连接器服务已附加到 MBean 服务,则此方法无效。它所连接的 MBean 服务不一定是它所注册的服务。
- 指定者:
preRegister
在接口MBeanRegistration
中- 参数:
mbs
- 正在其中注册此连接服务的 MBean 服务。name
- MBean 的对象名称。- 返回:
- MBean 将在其下注册的名称。
- 抛出:
NullPointerException
- 如果mbs
或name
为空。
-
postRegister
从接口MBeanRegistration
复制的描述允许 MBean 在 MBean 服务中注册后或注册失败后执行所需的任何操作。如果此方法的实现抛出
RuntimeException
或Error
,则 MBean Server 将分别重新抛出RuntimeMBeanException
或RuntimeErrorException
中的那些。但是,在postRegister
中抛出异常不会更改 MBean 的状态:如果 MBean 已经注册(registrationDone
是true
),则 MBean 将保持注册状态。这可能会使调用
createMBean()
或registerMBean()
的代码感到困惑,因为此类代码可能会假定在引发此类异常时 MBean 注册失败。因此,建议postRegister
的实现在可以避免的情况下不要抛出运行时异常或错误。- 指定者:
postRegister
在接口MBeanRegistration
中- 参数:
registrationDone
- 指示 MBean 是否已在 MBean 服务中成功注册。值 false 表示注册阶段失败。
-
preDeregister
当此连接器服务从 MBean 服务注销时由 MBean 服务调用。如果此连接器服务通过在其中注册而附加到该 MBean 服务,并且如果连接器服务仍处于活动状态,则注销它将调用
stop
方法。如果stop
方法抛出异常,注销尝试将失败。建议在取消注册 MBean 之前显式调用stop
方法。- 指定者:
preDeregister
在接口MBeanRegistration
中- 抛出:
IOException
- 如果由stop
方法抛出。Exception
- 此异常将被 MBean 服务捕获并作为MBeanRegistrationException
重新抛出。
-
postDeregister
public void postDeregister()从接口MBeanRegistration
复制的描述允许 MBean 在 MBean 服务中注销后执行所需的任何操作。如果此方法的实现抛出
RuntimeException
或Error
,则 MBean Server 将分别重新抛出RuntimeMBeanException
或RuntimeErrorException
中的那些。但是,在postDeregister
中抛出异常不会更改 MBean 的状态:MBean 已成功注销并将保持这种状态。这可能会使调用
unregisterMBean()
的代码感到困惑,因为它可能假定 MBean 注销失败。因此,建议postDeregister
的实现在可以避免的情况下不要抛出运行时异常或错误。- 指定者:
postDeregister
在接口MBeanRegistration
中
-