- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.remote.JMXConnectorServer
-
- All Implemented Interfaces:
-
MBeanRegistration,NotificationBroadcaster,NotificationEmitter,JMXAddressable,JMXConnectorServerMBean
- 已知直接子类:
-
RMIConnectorServer
public abstract class JMXConnectorServer extends NotificationBroadcasterSupport implements JMXConnectorServerMBean, MBeanRegistration, JMXAddressable
每个连接器服务器的超类。 连接器服务器连接到MBean服务器。 它监听客户端连接请求,并为每个连接请求创建一个连接。
连接器服务器通过在MBean服务器中注册或通过将MBean服务器传递给其构造函数与MBean服务器相关联。
连接器服务器在创建时不起作用。 当调用
start方法时,它才开始侦听客户端连接。 当调用stop方法或连接器服务器从其MBean服务器取消注册时,连接器服务器将停止侦听客户端连接。停止连接器服务器不会从其MBean服务器取消注册。 停止连接器服务器无法重新启动。
每次建立或断开客户端连接时,将发出
JMXConnectionNotification类的通知。- 从以下版本开始:
- 1.5
-
-
Field Summary
Fields Modifier and Type Field 描述 static StringAUTHENTICATOR指定连接器服务器的认证器的属性的名称。
-
构造方法摘要
构造方法 Constructor 描述 JMXConnectorServer()构造一个连接器服务器,该连接器服务器将在其所连接的MBean服务器中注册为MBean。JMXConnectorServer(MBeanServer mbeanServer)构造一个连接到给定MBean服务器的连接器服务器。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected voidconnectionClosed(String connectionId, String message, Object userData)当客户端连接正常关闭时,由子类调用。protected voidconnectionFailed(String connectionId, String message, Object userData)当客户端连接失败时由子类调用。protected voidconnectionOpened(String connectionId, String message, Object userData)当新的客户端连接打开时由子类调用。String[]getConnectionIds()此连接器服务器当前打开的连接的ID列表。MBeanServergetMBeanServer()返回此连接器服务器连接到的MBean服务器。MBeanNotificationInfo[]getNotificationInfo()返回一个数组,指示此MBean发送的通知。voidpostDeregister()允许MBean在MBean服务器中取消注册后执行所需的任何操作。voidpostRegister(Boolean registrationDone)允许MBean在MBean服务器中注册或注册失败后执行所需的操作。voidpreDeregister()当该连接器服务器从该MBean服务器取消注册时,由MBean服务器调用。ObjectNamepreRegister(MBeanServer mbs, ObjectName name)当该连接器服务器在该MBean服务器中注册时,由MBean服务器调用。voidsetMBeanServerForwarder(MBeanServerForwarder mbsf)插入一个对象,拦截通过此连接器服务器到达的MBean服务器的请求。JMXConnectortoJMXConnector(Map<String,?> env)返回此连接器服务器的客户端存根。-
Methods inherited from interface javax.management.remote.JMXAddressable
getAddress
-
Methods inherited from interface javax.management.remote.JMXConnectorServerMBean
getAddress, getAttributes, isActive, start, stop
-
Methods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
-
-
-
-
字段详细信息
-
AUTHENTICATOR
public static final String AUTHENTICATOR
指定连接器服务器的认证器的属性的名称。 与此属性相关联的值(如果有)必须是实现接口
JMXAuthenticator的对象。- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
JMXConnectorServer
public JMXConnectorServer()
构造一个连接器服务器,该连接器服务器将在其所连接的MBean服务器中注册为MBean。 当在MBean服务器中创建使其远程可用的连接器服务器时,通常会使用
createMBean方法之一调用此构造函数。
-
JMXConnectorServer
public JMXConnectorServer(MBeanServer mbeanServer)
构造一个连接到给定MBean服务器的连接器服务器。 以这种方式创建的连接器服务器可以在不同的MBean服务器中注册,也可以不在任何MBean服务器中注册。
- 参数
-
mbeanServer- 此连接器服务器连接到的MBean服务器。 如果此连接器服务器将通过注册到MBean服务器,则为空。
-
-
方法详细信息
-
getMBeanServer
public MBeanServer getMBeanServer()
返回此连接器服务器连接到的MBean服务器。
- 结果
- 此连接器服务器附加到的MBean服务器,如果尚未连接到MBean服务器,则为null。
-
setMBeanServerForwarder
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
描述从接口JMXConnectorServerMBean复制插入一个对象,拦截通过此连接器服务器到达的MBean服务器的请求。 此对象将作为
MBeanServer提供,用于由此连接器服务器创建的任何新连接。 现有连接不受影响。该方法可以使用不同的
MBeanServerForwarder对象多次调用。 结果是一连串的代理商。 最后一名货车是连锁店的第一名。 更详细地说:如果此连接器服务器已与
MBeanServer对象关联,则该对象将被赋予mbsf.setMBeanServer。 如果这样做会产生异常,则此方法会引发相同的异常,而不会产生任何其他影响。如果此连接器尚未与
MBeanServer对象关联,或者如果刚刚提到的mbsf.setMBeanServer呼叫成功,则mbsf成为此连接器服务器的MBeanServer。
- Specified by:
-
setMBeanServerForwarder在接口JMXConnectorServerMBean - 参数
-
mbsf- 新的MBeanServerForwarder。
-
getConnectionIds
public String[] getConnectionIds()
说明从接口JMXConnectorServerMBean复制此连接器服务器当前打开的连接的ID列表。
- Specified by:
-
getConnectionIds在接口JMXConnectorServerMBean - 结果
- 一个包含ID列表的新字符串数组。 如果没有当前打开的连接,该数组将为空。
-
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
返回此连接器服务器的客户端存根。 客户端存根是一个可串行化的对象,其
connect方法可用于与此连接器服务器建立一个新连接。给定的连接器不需要支持生成客户端存根。 但是,由JMX Remote API指定的连接器(JMXMP Connector和RMI Connector)。
此方法的默认实现使用
JMXConnectorServerMBean.getAddress()和JMXConnectorFactory生成存根,其代码等同于以下内容:JMXServiceURL addr =getAddress(); returnJMXConnectorFactory.newJMXConnector(addr, env);不适合的连接器服务器必须覆盖此方法,以便它实现相应的逻辑或抛出
UnsupportedOperationException。- Specified by:
-
toJMXConnector在接口JMXConnectorServerMBean - 参数
-
env- 可以提供给JMXConnector.connect(Map)的客户端连接参数。 可以为空,这相当于一个空的地图。 - 结果
- 客户端存根可用于与此连接器服务器建立新连接。
- 异常
-
UnsupportedOperationException- 如果此连接器服务器不支持生成客户端存根。 -
IllegalStateException- 如果JMXConnectorServer未启动(请参阅JMXConnectorServerMBean.isActive())。 -
IOException- 如果通信问题意味着无法创建存根。
-
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
返回一个数组,指示此MBean发送的通知。
JMXConnectorServer的实现返回一个包含一个元素的数组,表明它可以发出类别中定义类型的类别JMXConnectionNotification的通知。 可以发出其他通知的子类应该返回一个包含该元素的数组以及其他通知的描述。- Specified by:
-
getNotificationInfo在接口NotificationBroadcaster - 重写:
-
getNotificationInfo在NotificationBroadcasterSupport - 结果
- 可能通知的数组。
-
connectionOpened
protected void connectionOpened(String connectionId, String message, Object userData)
当新的客户端连接打开时由子类调用。 添加
connectionId通过返回的列表getConnectionIds(),然后发出JMXConnectionNotification型JMXConnectionNotification.OPENED。- 参数
-
connectionId- 新连接的ID。 这必须与以前由此连接器服务器打开的任何连接的ID不同。 -
message- 发出的消息JMXConnectionNotification。 可以为null。 见Notification.getMessage()。 -
userData-userData发出的JMXConnectionNotification。 可以为null。 见Notification.getUserData()。 - 异常
-
NullPointerException- 如果connectionId为空。
-
connectionClosed
protected void connectionClosed(String connectionId, String message, Object userData)
当客户端连接正常关闭时,由子类调用。 删除
connectionId从返回的列表getConnectionIds(),然后发出JMXConnectionNotification型JMXConnectionNotification.CLOSED。- 参数
-
connectionId- 已关闭连接的ID。 -
message- 发出的消息JMXConnectionNotification。 可以为null。 见Notification.getMessage()。 -
userData-userData为发射JMXConnectionNotification。 可以为null。 见Notification.getUserData()。 - 异常
-
NullPointerException- 如果connectionId为空。
-
connectionFailed
protected void connectionFailed(String connectionId, String message, Object userData)
当客户端连接失败时由子类调用。 删除
connectionId从返回的列表getConnectionIds(),然后发出JMXConnectionNotification型JMXConnectionNotification.FAILED。- 参数
-
connectionId- 连接失败的ID。 -
message- 发出的消息JMXConnectionNotification。 可以为null。 见Notification.getMessage()。 -
userData- 发表的userDataJMXConnectionNotification。 可以为null。 见Notification.getUserData()。 - 异常
-
NullPointerException- 如果connectionId为空。
-
preRegister
public ObjectName preRegister(MBeanServer mbs, ObjectName name)
当该连接器服务器在该MBean服务器中注册时,由MBean服务器调用。 此连接器服务器连接到MBean服务器,其
getMBeanServer()方法将返回mbs。如果此连接器服务器已连接到MBean服务器,则此方法不起作用。 它附加的MBean服务器不一定是它正在注册的。
- Specified by:
-
preRegister在接口MBeanRegistration - 参数
-
mbs- 正在注册此连接服务器的MBean服务器。 -
name- MBean的对象名称。 - 结果
- 要注册MBean的名称。
- 异常
-
NullPointerException- 如果mbs或name为空。
-
postRegister
public void postRegister(Boolean registrationDone)
说明从界面MBeanRegistration复制允许MBean在MBean服务器中注册或注册失败后执行所需的操作。如果这种方法的实现会引发一个
RuntimeException或Error,那么MBean服务器将分别推翻RuntimeMBeanException或RuntimeErrorException。 但是,在postRegister抛出异常将不会更改MBean的状态:如果MBean已经注册(registrationDone是true),那么MBean将保持注册。这可能会导致代码调用
createMBean()或registerMBean()令人困惑,因为这样的代码可能会假设在引发异常时MBean注册失败。 因此,如果可以避免,推荐postRegister实现不会抛出运行时异常或错误。- Specified by:
-
postRegister在接口MBeanRegistration - 参数
-
registrationDone- 指示MBean服务器中MBean是否已成功注册。 值false表示注册阶段失败。
-
preDeregister
public void preDeregister() throws 异常当该连接器服务器从该MBean服务器取消注册时,由MBean服务器调用。 如果此连接器服务器通过注册连接到该MBean服务器,并且连接器服务器仍处于活动状态,则取消注册将调用
stop方法。 如果stop方法抛出异常,则注销尝试将失败。 建议在取消注册MBean之前明确地调用这个stop方法。- Specified by:
-
preDeregister在接口MBeanRegistration - 异常
-
IOException- 如果抛出stop方法。 -
异常- 此异常将被MBean服务器捕获,并重新抛出为MBeanRegistrationException。
-
postDeregister
public void postDeregister()
描述从接口MBeanRegistration复制允许MBean在MBean服务器中取消注册后执行所需的任何操作。如果这种方法的实现会引发一个
RuntimeException或一个Error,那么MBean服务器将分别推翻RuntimeMBeanException或RuntimeErrorException中的那些。 但是,在postDeregister抛出异常将不会更改MBean的状态:MBean已经成功注销,并将保持不变。这可能会导致代码调用
unregisterMBean()令人困惑,因为它可能会假设MBean注销失败。 因此,如果可以避免,建议postDeregister实现不会抛出运行时异常或错误。- Specified by:
-
postDeregister在接口MBeanRegistration
-
-