Module java.management

Class JMXConnectorServer

java.lang.Object
javax.management.NotificationBroadcasterSupport
javax.management.remote.JMXConnectorServer
所有已实现的接口:
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 Details

    • AUTHENTICATOR

      public static final String AUTHENTICATOR

      指定连接器服务器的验证器的属性名称。与此属性关联的值(如果有)必须是实现接口JMXAuthenticator的对象。

      参见:
  • Constructor Details

    • JMXConnectorServer

      public JMXConnectorServer()

      构造一个将作为MBean注册在其所附加的MBean服务器中的连接器服务器。通常在MBean服务器内部创建使其远程可用的连接器服务器时,通过其中一个createMBean方法调用此构造函数。

    • JMXConnectorServer

      public JMXConnectorServer(MBeanServer mbeanServer)

      构造一个连接到给定MBean服务器的连接器服务器。以这种方式创建的连接器服务器可以在不同的MBean服务器中注册,或者不注册在任何MBean服务器中。

      参数:
      mbeanServer - 这个连接器服务器所附加的MBean服务器。如果此连接器服务器将通过在其中注册来附加到MBean服务器,则为null。
  • Method Details

    • 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

      指定者:
      setMBeanServerForwarder 在接口 JMXConnectorServerMBean
      参数:
      mbsf - 新的MBeanServerForwarder
    • getConnectionIds

      public String[] getConnectionIds()
      从接口复制的描述: JMXConnectorServerMBean

      当前连接到此连接器服务器的连接的ID列表。

      指定者:
      getConnectionIds 在接口 JMXConnectorServerMBean
      返回:
      包含ID列表的新字符串数组。如果当前没有打开的连接,则此数组将为空。
    • toJMXConnector

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

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

      给定的连接器不一定支持生成客户端存根。但是,JMX远程API指定的连接器支持(JMXMP连接器和RMI连接器)。

      此方法的默认实现使用JMXConnectorServerMBean.getAddress()JMXConnectorFactory来生成存根,代码等效于以下内容:

       JMXServiceURL addr = getAddress();
       return JMXConnectorFactory.newJMXConnector(addr, env);
       

      如果这对于某个连接器服务器不合适,则必须覆盖此方法,以便实现适当的逻辑或抛出UnsupportedOperationException

      指定者:
      toJMXConnector 在接口 JMXConnectorServerMBean
      参数:
      env - 可以提供给JMXConnector.connect(Map)的客户端连接参数。可以为null,相当于空映射。
      返回:
      一个客户端存根,可用于与此连接器服务器建立新连接。
      抛出:
      UnsupportedOperationException - 如果此连接器服务器不支持生成客户端存根。
      IllegalStateException - 如果JMXConnectorServer未启动(参见JMXConnectorServerMBean.isActive())。
      IOException - 如果通信问题导致无法创建存根。
    • getNotificationInfo

      public MBeanNotificationInfo[] getNotificationInfo()

      返回指示此MBean发送的通知的数组。在JMXConnectorServer中的实现返回一个具有一个元素的数组,指示它可以发出JMXConnectionNotification类的通知,该类中定义了这些类型。可以发出其他通知的子类应返回一个包含此元素及其他通知描述的数组。

      指定由:
      getNotificationInfo 在接口中 NotificationBroadcaster
      返回:
      可能通知的数组。
    • connectionOpened

      protected void connectionOpened(String connectionId, String message, Object userData)

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

      参数:
      connectionId - 新连接的ID。这必须与此连接器服务器先前打开的任何连接的ID不同。
      message - 发出的JMXConnectionNotification的消息。可以为null。参见Notification.getMessage()
      userData - 发出的JMXConnectionNotificationuserData。可以为null。参见Notification.getUserData()
      抛出:
      NullPointerException - 如果connectionId为null。
    • connectionClosed

      protected void connectionClosed(String connectionId, String message, Object userData)

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

      参数:
      connectionId - 关闭连接的ID。
      message - 发出的JMXConnectionNotification的消息。可以为null。参见Notification.getMessage()
      userData - 发出的JMXConnectionNotificationuserData。可以为null。参见Notification.getUserData()
      抛出:
      NullPointerException - 如果connectionId为null。
    • connectionFailed

      protected void connectionFailed(String connectionId, String message, Object userData)

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

      参数:
      connectionId - 失败连接的ID。
      message - 发出的JMXConnectionNotification的消息。可以为null。参见Notification.getMessage()
      userData - 发出的JMXConnectionNotificationuserData。可以为null。参见Notification.getUserData()
      抛出:
      NullPointerException - 如果connectionId为null。
    • preRegister

      public ObjectName preRegister(MBeanServer mbs, ObjectName name)

      当此连接器服务器在MBean服务器中注册时,由MBean服务器调用。此连接器服务器将附加到MBean服务器,其getMBeanServer()方法将返回mbs

      如果此连接器服务器已经附加到MBean服务器,此方法不起作用。它附加到的MBean服务器不一定是正在注册的MBean服务器。

      指定由:
      preRegister 在接口中 MBeanRegistration
      参数:
      mbs - 此连接服务器正在注册的MBean服务器。
      name - MBean的对象名称。
      返回:
      要注册MBean的名称。
      抛出:
      NullPointerException - 如果mbsname为null。
    • postRegister

      public void postRegister(Boolean registrationDone)
      从接口中复制的描述: MBeanRegistration
      允许MBean在注册到MBean服务器后或注册失败后执行所需的任何操作。

      如果此方法的实现引发RuntimeExceptionError,MBean服务器将在RuntimeMBeanExceptionRuntimeErrorException中重新抛出这些异常。但是,在postRegister中抛出异常不会更改MBean的状态:如果MBean已经注册(registrationDonetrue),则MBean将保持注册状态。

      对于调用createMBean()registerMBean()的代码可能会感到困惑,因为这样的代码可能会假定当引发此类异常时MBean注册失败。因此,建议postRegister的实现尽量避免抛出运行时异常或错误。

      指定由:
      postRegister 在接口中 MBeanRegistration
      参数:
      registrationDone - 指示MBean是否已成功在MBean服务器中注册。值为false表示注册阶段失败。
    • preDeregister

      public void preDeregister() throws Exception

      当此连接器服务器从MBean服务器中注销时,由MBean服务器调用。如果此连接器服务器通过在其中注册而附加到该MBean服务器,并且连接器服务器仍处于活动状态,则取消注册将调用stop方法。如果stop方法引发异常,则注销尝试将失败。建议在注销MBean之前显式调用stop方法。

      指定由:
      preDeregister 在接口中 MBeanRegistration
      抛出:
      IOException - 如果由stop方法引发。
      Exception - 此异常将被MBean服务器捕获并重新抛出为MBeanRegistrationException
    • postDeregister

      public void postDeregister()
      从接口中复制的描述: MBeanRegistration
      允许MBean在从MBean服务器中注销后执行所需的任何操作。

      如果此方法的实现引发RuntimeExceptionError,MBean服务器将在RuntimeMBeanExceptionRuntimeErrorException中重新抛出这些异常。但是,在postDeregister中抛出异常不会更改MBean的状态:MBean已经成功注销并将保持如此。

      对于调用unregisterMBean()的代码可能会感到困惑,因为它可能会假定MBean注销失败。因此,建议postDeregister的实现尽量避免抛出运行时异常或错误。

      指定由:
      postDeregister 在接口中 MBeanRegistration