Класс 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
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
AUTHENTICATOR |
Имя атрибута, определяющего аутентификатор для сервера подключений. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JMXConnectorServer() |
Создаёт сервер подключений, который будет зарегистрирован как MBean в прикреплённом к нему сервере MBean. |
JMXConnectorServer |
Создаёт сервер подключений, прикреплённый к указанному серверу MBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
connectionClosed |
Вызывается подклассом при нормальном закрытии клиентского подключения. |
protected void |
connectionFailed |
Вызывается подклассом при сбое клиентского подключения. |
protected void |
connectionOpened |
Вызывается подклассом при открытии нового клиентского подключения. |
String[] |
getConnectionIds() |
Список идентификаторов текущих открытых подключений к этому серверу подключений. |
MBeanServer |
getMBeanServer() |
Возвращает сервер MBean, к которому прикреплён этот сервер подключений. |
MBeanNotificationInfo[] |
getNotificationInfo() |
Возвращает массив, указывающий уведомления, которые отправляет данный MBean. |
void |
postDeregister() |
Позволяет MBean выполнить любые операции, необходимые после дерегистрации в сервере MBean. |
void |
postRegister |
Позволяет MBean выполнить любые операции, необходимые после регистрации в сервере MBean или после неудачи регистрации. |
void |
preDeregister() |
Вызывается сервером MBean, когда этот сервер подключений дерегистрируется из этого сервера MBean. |
ObjectName |
preRegister |
Вызывается сервером MBean, когда этот сервер подключений регистрируется в этом сервере MBean. |
void |
setMBeanServerForwarder |
Вставляет объект, который перехватывает запросы к серверу MBean, поступающие через этот сервер подключений. |
JMXConnector |
toJMXConnector |
Возвращает клиентский заглушку для этого сервера подключений. |
Методы, объявленные в классе 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
public static final String AUTHENTICATOR
Имя атрибута, определяющего аутентификатор для сервера подключения. Значение, связанное с этим атрибутом, если оно есть, должно быть объектом, реализующим интерфейс JMXAuthenticator.
- См. также:
Подробное описание конструкторов
JMXConnectorServer
public JMXConnectorServer()
Создаёт сервер подключения, который будет зарегистрирован как MBean в сервере MBean, к которому он подключён. Этот конструктор обычно вызывается одним из createMBean методов при создании, внутри сервера MBean, сервера подключения, делающего его доступным удалённо.
JMXConnectorServer
public JMXConnectorServer(MBeanServer mbeanServer)
Создаёт сервер подключения, подключённый к заданному серверу MBean. Сервер подключения, созданный таким образом, может быть зарегистрирован в другом сервере MBean или не зарегистрирован ни в каком сервере MBean.
- Параметры:
-
mbeanServer- сервер MBean, к которому подключён этот сервер подключения. Значение null, если этот сервер подключения будет подключён к серверу MBean, будучи зарегистрированным в нём.
Подробное описание методов
getMBeanServer
public MBeanServer getMBeanServer()
Возвращает сервер MBean, к которому подключён этот сервер подключения.
- Возвращает:
- сервер MBean, к которому подключён этот сервер подключения, или null, если он ещё не подключён к серверу MBean.
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Список идентификаторов текущих открытых соединений с этим сервером подключения.
- Определено в:
-
getConnectionIdsв интерфейсеJMXConnectorServerMBean - Возвращает:
- новый массив строк, содержащий список идентификаторов. Если открытых соединений нет, этот массив будет пустым.
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.
- Определено в:
-
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- идентификатор нового соединения. Он должен отличаться от идентификатора любого соединения, ранее открытого этим сервером подключения. -
message- сообщение для отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData-userDataдля отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData(). - Исключения:
-
NullPointerException- еслиconnectionIdравно null.
connectionClosed
protected void connectionClosed(String connectionId, String message, Object userData)
Вызывается подклассом при нормальном закрытии подключения клиента. Удаляет connectionId из списка, возвращаемого методом getConnectionIds(), затем отправляет JMXConnectionNotification с типом JMXConnectionNotification.CLOSED.
- Параметры:
-
connectionId- идентификатор закрытого соединения. -
message- сообщение для отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData-userDataдля отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData(). - Исключения:
-
NullPointerException- еслиconnectionIdравно null.
connectionFailed
protected void connectionFailed(String connectionId, String message, Object userData)
Вызывается подклассом при сбое подключения клиента. Удаляет connectionId из списка, возвращаемого методом getConnectionIds(), затем отправляет JMXConnectionNotification с типом JMXConnectionNotification.FAILED.
- Параметры:
-
connectionId- идентификатор неисправного соединения. -
message- сообщение для отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData-userDataдля отправляемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData(). - Исключения:
-
NullPointerException- еслиconnectionIdравно null.
preRegister
public ObjectName preRegister(MBeanServer mbs, ObjectName name)
Вызывается сервером MBean при регистрации этого сервера соединений в этом сервере MBean. Этот сервер соединений присоединяется к серверу MBean, и его метод getMBeanServer() вернёт mbs.
Если этот сервер соединений уже присоединён к серверу MBean, этот метод не оказывает никакого эффекта. Сервер MBean, к которому он присоединён, необязательно совпадает с тем, в котором он регистрируется.
- Specified by:
-
preRegisterв интерфейсеMBeanRegistration - Parameters:
-
mbs- сервер MBean, в котором регистрируется этот сервер соединений. -
name- имя объекта MBean. - Returns:
- Имя, под которым MBean будет зарегистрирован.
- Throws:
-
NullPointerException- еслиmbsилиnameравно null.
postRegister
public void postRegister(Boolean registrationDone)
MBeanRegistrationЕсли реализация этого метода бросает исключение RuntimeException или Error, сервер MBean перебросит их внутри RuntimeMBeanException или RuntimeErrorException соответственно. Однако, бросок исключения в postRegister не изменит состояние MBean: если MBean уже зарегистрирован (registrationDone равно true), MBean останется зарегистрированным.
Это может быть запутанным для кода, вызывающего createMBean() или registerMBean(), поскольку такой код может предположить, что регистрация MBean завершилась неудачей при возникновении такого исключения. Поэтому рекомендуется, чтобы реализации postRegister не выбрасывали исключения Runtime или Errors, если это возможно.
- Specified by:
-
postRegisterв интерфейсеMBeanRegistration - Parameters:
-
registrationDone- Указывает, был ли MBean успешно зарегистрирован в сервере MBean. Значение false означает, что фаза регистрации завершилась неудачно.
preDeregister
public void preDeregister() throws Exception
Вызывается сервером MBean при аннулировании регистрации этого сервера соединений из этого сервера MBean. Если этот сервер соединений был присоединён к этому серверу MBean путём регистрации в нём и если сервер соединений всё ещё активен, то при его аннулировании будет вызван метод stop. Если метод stop вызывает исключение, попытка аннулирования регистрации завершится неудачей. Рекомендуется явно вызывать метод stop перед аннулированием регистрации MBean.
- Specified by:
-
preDeregisterв интерфейсеMBeanRegistration - Throws:
-
IOException- если вызван методомstop. -
Exception- Это исключение будет перехвачено сервером MBean и переброшено какMBeanRegistrationException.
postDeregister
public void postDeregister()
MBeanRegistrationЕсли реализация этого метода бросает исключение RuntimeException или Error, сервер MBean перебросит их внутри RuntimeMBeanException или RuntimeErrorException соответственно. Однако, бросок исключения в postDeregister не изменит состояние MBean: MBean уже успешно аннулирован и останется таким.
Это может быть запутанным для кода, вызывающего unregisterMBean(), так как он может предположить, что аннулирование регистрации MBean завершилось неудачей. Поэтому рекомендуется, чтобы реализации postDeregister не выбрасывали исключения Runtime или Errors, если это возможно.
- Specified by:
-
postDeregisterв интерфейсеMBeanRegistration
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/remote/JMXConnectorServer.html