Класс 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
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static String |
AUTHENTICATOR Имя атрибута, который определяет аутентификатор для сервера подключения. |
Конструкторы
| Конструктор и описание |
|---|
JMXConnectorServer() Создаёт сервер подключения, который будет зарегистрирован как 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[] |
getConnectionIds() Список идентификаторов текущих открытых подключений к этому серверу подключения. |
MBeanServer |
getMBeanServer() Возвращает сервер MBean, к которому прикреплён этот сервер подключения. |
MBeanNotificationInfo[] |
getNotificationInfo() Возвращает массив, указывающий уведомления, которые отправляет этот MBean. |
void |
postDeregister() Позволяет MBean выполнить все необходимые операции после удаления из сервера MBean. |
void |
postRegister(Boolean registrationDone) Позволяет MBean выполнить все необходимые операции после регистрации в сервере MBean или после неудачной регистрации. |
void |
preDeregister() Вызывается сервером MBean при удалении этого сервера подключения из сервера MBean. |
ObjectName |
preRegister(MBeanServer mbs,
ObjectName name) Вызывается сервером MBean при регистрации этого сервера подключения в этом сервере MBean. |
void |
setMBeanServerForwarder(MBeanServerForwarder mbsf) Вставляет объект, который перехватывает запросы к серверу MBean, которые поступают через этот сервер подключения. |
JMXConnector |
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.JMXConnectorServerMBean
getAddress, getAttributes, isActive, start, stop Методы, унаследованные от интерфейса javax.management.remote.JMXAddressable
getAddress Поля
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(); 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 - Переопределяет:
-
getNotificationInfoв классеNotificationBroadcasterSupport - Возвращает:
- массив возможных уведомлений.
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, к которому он прикреплён, не обязательно является тем, в котором он регистрируется.
- Определено в:
-
preRegisterв интерфейсеMBeanRegistration - Параметры:
-
mbs- сервер MBean, в котором регистрируется этот сервер подключения. -
name- имя объекта MBean. - Возвращает:
- Имя, под которым MBean должен быть зарегистрирован.
- Исключения:
-
NullPointerException- еслиmbsилиnameравно null.
postRegister
public void postRegister(Boolean registrationDone)
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить все необходимые операции после регистрации в сервере MBean или после неудачной регистрации.
Если реализация этого метода выбрасывает исключение RuntimeException или Error, сервер MBean повторно выбросит их внутри исключения RuntimeMBeanException или RuntimeErrorException соответственно. Однако, выброс исключения в postRegister не изменит состояние MBean: если MBean уже был зарегистрирован (registrationDone равно true), MBean останется зарегистрированным.
Это может быть непонятно для кода, вызывающего createMBean() или registerMBean(), так как такой код может предположить, что регистрация MBean завершилась неудачно, когда возникает такое исключение. Поэтому рекомендуется, чтобы реализации postRegister не выбрасывали исключения Runtime или ошибки, если это возможно.
- Определено в:
-
postRegisterв интерфейсеMBeanRegistration - Параметры:
-
registrationDone- Указывает, был ли MBean успешно зарегистрирован в сервере MBean. Значение false означает, что этап регистрации завершился неудачно.
preDeregister
public void preDeregister()
throws Exception Вызывается сервером MBean, когда этот сервер подключения отсоединяется от этого сервера MBean. Если этот сервер подключения был присоединен к этому серверу MBean путем регистрации в нем, и если сервер подключения все еще активен, то его отключение вызовет метод stop. Если метод stop вызывает исключение, попытка отключения завершится неудачей. Рекомендуется явно вызвать метод stop перед отсоединением MBean.
- Определено в:
-
preDeregisterв интерфейсеMBeanRegistration - Исключения:
-
IOException- если выброшено методомstop. -
Exception- Это исключение будет перехвачено сервером MBean и повторно выброшено какMBeanRegistrationException.
postDeregister
public void postDeregister()
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить все необходимые операции после того, как он был отсоединен от сервера MBean.
Если реализация этого метода выбрасывает исключение RuntimeException или Error, сервер MBean повторно выбросит их внутри исключения RuntimeMBeanException или RuntimeErrorException соответственно. Однако, выброс исключения в postDeregister не изменит состояние MBean: MBean уже был успешно отсоединен и останется таким.
Это может быть непонятно для кода, вызывающего unregisterMBean(), так как он может предположить, что отсоединение MBean завершилось неудачей. Поэтому рекомендуется, чтобы реализации postDeregister не выбрасывали исключения Runtime или ошибки, если это возможно.
- Определено в:
-
postDeregisterв интерфейсеMBeanRegistration
© 1993, 2020, 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.