Класс RMIConnectorServer
- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- javax.management.remote.JMXConnectorServer
-
- javax.management.remote.rmi.RMIConnectorServer
- Все реализованные интерфейсы:
- MBeanRegistration, NotificationBroadcaster, NotificationEmitter, JMXAddressable, JMXConnectorServerMBean
public class RMIConnectorServer extends JMXConnectorServer
Сервер соединений JMX API, который создаёт подключения на основе RMI от удалённых клиентов. Обычно такие серверы соединений создаются с помощью JMXConnectorServerFactory. Однако специализированные приложения могут использовать этот класс напрямую, например, с объектом RMIServerImpl.
- С тех пор:
- 1.5
Краткое описание полей
| Модификатор и тип | Поле и описание |
|---|---|
static String |
JNDI_REBIND_ATTRIBUTE Имя атрибута, указывающего, должен ли |
static String |
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE Имя атрибута, указывающего |
static String |
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE Имя атрибута, указывающего |
Поля, унаследованные от класса javax.management.remote.JMXConnectorServer
AUTHENTICATOR Краткое описание конструкторов
| Конструктор и описание |
|---|
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment) Создаёт |
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
MBeanServer mbeanServer) Создаёт |
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
RMIServerImpl rmiServerImpl,
MBeanServer mbeanServer) Создаёт |
Краткое описание методов
| Модификатор и тип | Метод и описание |
|---|---|
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) Вызывается подклассом при открытии нового соединения клиента. |
JMXServiceURL |
getAddress() Адрес этого сервера соединений. |
Map<String,?> |
getAttributes() Атрибуты этого сервера соединений. |
boolean |
isActive() Определяет, активен ли сервер соединений. |
void |
setMBeanServerForwarder(MBeanServerForwarder mbsf) Вставляет объект, перехватывающий запросы к серверу MBean, поступающие через этот сервер соединений. |
void |
start() Активирует сервер соединений, то есть начинает прослушивать подключения клиентов. |
void |
stop() Деактивирует сервер соединений, то есть прекращает прослушивание подключений клиентов. |
JMXConnector |
toJMXConnector(Map<String,?> env) Возвращает заглушку клиента для этого сервера соединений. |
Методы, унаследованные от класса javax.management.remote.JMXConnectorServer
getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister Методы, унаследованные от класса javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
JNDI_REBIND_ATTRIBUTE
public static final String JNDI_REBIND_ATTRIBUTE
Имя атрибута, указывающего, нужно ли RMIServer прокси-серверу RMI-соединения переопределять существующий прокси-сервер по тому же адресу. Значение этого атрибута (если оно есть) должно быть строкой, равной (без учета регистра) "true" или "false". Значение по умолчанию — false.
- См. также:
- Значения константных полей
RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
Имя атрибута, указывающего RMIClientSocketFactory для RMI-объектов, созданных в связке с этим соединителем. Значение атрибута должно быть типа RMIClientSocketFactory и может быть задано только в аргументе Map при создании сервера соединения.
- См. также:
- Значения константных полей
RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
public static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
Имя атрибута, указывающего RMIServerSocketFactory для RMI-объектов, созданных в связке с этим соединителем. Значение атрибута должно быть типа RMIServerSocketFactory и может быть задано только в аргументе Map при создании сервера соединения.
- См. также:
- Значения константных полей
Конструкторы
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment)
throws IOException Создаёт RMIConnectorServer. Это эквивалентно вызову RMIConnectorServer(directoryURL,environment,null,null)
- Параметры:
-
url- URL, определяющий способ создания сервера соединения. Не может быть null. -
environment- атрибуты, управляющие созданием и сохранением RMI-объекта. Может быть null, что эквивалентно пустому Map. - Исключения:
-
IllegalArgumentException- еслиurlравно null. -
MalformedURLException- еслиurlне соответствует синтаксису RMI-соединения или его протокол не распознаётся этой реализацией. Только "rmi" и "iiop" допустимы при использовании этого конструктора. -
IOException- если сервер соединения не может быть создан по какой-либо причине или неизбежно, что его методstartзавершится неудачно.
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
MBeanServer mbeanServer)
throws IOException Создаёт RMIConnectorServer для заданного сервера MBean. Это эквивалентно вызову RMIConnectorServer(directoryURL,environment,null,mbeanServer)
- Параметры:
-
url- URL, определяющий способ создания сервера соединения. Не может быть null. -
environment- атрибуты, управляющие созданием и сохранением RMI-объекта. Может быть null, что эквивалентно пустому Map. -
mbeanServer- сервер MBean, к которому подключается новый сервер соединения, или null, если он будет подключен путём регистрации в качестве MBean на сервере MBean. - Исключения:
-
IllegalArgumentException- еслиurlравно null. -
MalformedURLException- еслиurlне соответствует синтаксису RMI-соединения или его протокол не распознаётся этой реализацией. Только "rmi" и "iiop" допустимы при использовании этого конструктора. -
IOException- если сервер соединения не может быть создан по какой-либо причине или неизбежно, что его методstartзавершится неудачно.
RMIConnectorServer
public RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
RMIServerImpl rmiServerImpl,
MBeanServer mbeanServer)
throws IOException Создаёт RMIConnectorServer для заданного сервера MBean.
- Параметры:
-
url- URL, определяющий способ создания сервера соединения. Не может быть null. -
environment- атрибуты, управляющие созданием и сохранением RMI-объекта. Может быть null, что эквивалентно пустому Map. -
rmiServerImpl- Реализация интерфейса RMIServer, соответствующая типу протокола, указанного в url. Если этот параметр не null, тип протокола, указанный в url, не ограничен и предполагается корректным. В противном случае распознаются только "rmi" и "iiop". -
mbeanServer- сервер MBean, к которому подключается новый сервер соединения, или null, если он будет подключен путём регистрации в качестве MBean на сервере MBean. - Исключения:
-
IllegalArgumentException- еслиurlравно null. -
MalformedURLException- еслиurlне соответствует синтаксису RMI-соединения или его протокол не распознаётся этой реализацией. При null rmiServerImpl распознаются только "rmi" и "iiop". -
IOException- если сервер соединения не может быть создан по какой-либо причине или неизбежно, что его методstartзавершится неудачно. - См. также:
start()
Методы
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env)
throws IOException Возвращает клиентский заглушку для этого сервера соединения. Клиентская заглушка — сериализуемый объект, чьи метод connect может быть использован для создания нового подключения к этому серверу соединения.
- Определено в:
-
toJMXConnectorв интерфейсеJMXConnectorServerMBean - Переопределяет:
-
toJMXConnectorв классеJMXConnectorServer - Параметры:
-
env- параметры клиентского подключения, такого же типа, которые могут быть предоставлены методуJMXConnector.connect(Map). Может быть null, что эквивалентно пустому map. - Возвращает:
- клиентскую заглушку, которая может быть использована для создания нового подключения к этому серверу соединения.
- Исключения:
-
UnsupportedOperationException- если этот сервер соединения не поддерживает создание клиентских заглушек. -
IllegalStateException- если JMXConnectorServer не запущен (см.isActive()). -
IOException- если проблема связи не позволяет создать заглушку.
start
public void start()
throws IOException Активирует сервер соединения, т.е. начинает прослушивание подключений клиентов. Вызов этого метода, когда сервер соединения уже активен, не имеет эффекта. Вызов этого метода, когда сервер соединения остановлен, сгенерирует IOException.
Поведение этого метода при первом вызове зависит от параметров, которые были предоставлены при создании, как описано ниже.
Во-первых, требуется объект подкласса RMIServerImpl для экспорта сервера соединения через RMI:
- Если в конструктор был передан
RMIServerImpl, он используется. - В противном случае, если часть протокола
JMXServiceURLв конструкторе былаiiop, создаётся объект типаRMIIIOPServerImpl. - В противном случае, если
JMXServiceURLбыло null или его часть протокола былаrmi, создаётся объект типаRMIJRMPServerImpl. - В противном случае, реализация может создать специфичную для реализации реализацию
RMIServerImplили бросить исключениеMalformedURLException.
Если заданный адрес включает URL каталога JNDI, как указано в документации пакета для javax.management.remote.rmi, то этот RMIConnectorServer выполнит загрузку, связав RMIServerImpl с заданным адресом.
Если часть пути URL JMXServiceURL была пустой или содержала только один слэш (/), то RMI-объект не будет связан с каталогом. Вместо этого ссылка на него будет закодирована в пути URL RMIConnectorServer (возвращается методом getAddress()). Кодировки для rmi и iiop описаны в документации пакета для javax.management.remote.rmi.
Поведение, когда часть пути URL не является пустой или URL каталога JNDI, или когда протокол не rmi или iiop, определено реализацией и может включать в себя выбрасывание MalformedURLException при создании или запуске сервера соединения.
- Исключения:
-
IllegalStateException- если сервер соединения не подключен к серверу MBean. -
IOException- если сервер соединения не может быть запущен, или в случае протоколаiiop, если RMI/IIOP не поддерживается.
stop
public void stop()
throws IOException Деактивирует сервер подключения, то есть прекращает прослушивание подключений клиентов. Вызов этого метода также закроет все подключения клиентов, созданные этим сервером. После возвращения этого метода, будь то нормально или с исключением, сервер подключения не будет создавать новых подключений клиентов.
После остановки сервера подключения его нельзя запустить снова.
Вызов этого метода, когда сервер подключения уже остановлен, не оказывает никакого эффекта. Вызов этого метода, когда сервер подключения еще не запущен, приведет к постоянной деактивации объекта сервера подключения.
Если закрытие подключения клиента вызывает исключение, это исключение не выбрасывается из этого метода. Событие JMXConnectionNotification генерируется из этого MBean с идентификатором подключения, которое не удалось закрыть.
Закрытие сервера подключения — потенциально медленная операция. Например, если машина клиента с открытым подключением потерпела сбой, операция закрытия может ожидать таймаута сетевого протокола. Вызывающие методы, которые не хотят блокироваться при закрытии, должны выполнять эту операцию в отдельном потоке.
Этот метод вызывает метод close на объекте сервера подключения RMIServerImpl.
Если сервер RMIServerImpl был связан с каталогом JNDI методом start, он отключается от каталога этим методом.
- Throws:
-
IOException- если сервер нельзя закрыть без ошибок, или еслиRMIServerImplнельзя отключить от каталога. Когда это исключение выбрасывается, сервер уже попытался закрыть все подключения клиентов, если это применимо; вызватьRMIServerImpl.close(); и отключитьRMIServerImplот его каталога, если это применимо. Все подключения клиентов закрываются, за исключением тех, которые сгенерировали исключения при попытке сервера их закрыть.
isActive
public boolean isActive()
Описание скопировано из интерфейса: JMXConnectorServerMBean
Определяет, активен ли сервер подключения. Сервер подключения начинает активность, когда метод start возвращает успешный результат, и остается активным до тех пор, пока не будет вызван метод stop или пока сервер подключения не потерпит сбой.
- Returns:
- true, если сервер подключения активен.
getAddress
public JMXServiceURL getAddress()
Описание скопировано из интерфейса: JMXConnectorServerMBean
Адрес этого сервера подключения.
Возвращаемый адрес может не совпадать с исходным JMXServiceURL, предоставленным при создании сервера подключения, поскольку исходный адрес может быть неполным. Например, номер порта может быть динамически назначен при запуске сервера подключения. Вместо этого возвращаемый адрес — это фактический JMXServiceURL сервера JMXConnectorServer. Это адрес, который клиенты передают в JMXConnectorFactory.connect(JMXServiceURL).
Обратите внимание, что возвращаемый адрес может быть null если JMXConnectorServer еще не active.
- Returns:
- адрес этого сервера подключения или null, если он отсутствует.
getAttributes
public Map<String,?> getAttributes()
Описание скопировано из интерфейса: JMXConnectorServerMBean
Атрибуты этого сервера подключения.
- Returns:
- только для чтения карту, содержащую атрибуты этого сервера подключения. Атрибуты, значения которых не сериализуемы, исключаются из этой карты. Если нет сериализуемых атрибутов, возвращаемая карта пуста.
setMBeanServerForwarder
public void setMBeanServerForwarder(MBeanServerForwarder mbsf)
Описание скопировано из интерфейса: JMXConnectorServerMBean
Вставляет объект, который перехватывает запросы к серверу MBean, поступающие через этот сервер подключения. Этот объект будет предоставлен как MBeanServer для любого нового подключения, созданного этим сервером подключения. Существующие подключения не затронуты.
Этот метод можно вызывать более одного раза с различными объектами MBeanServerForwarder. Результатом является цепочка перенаправляющих объектов. Последний добавленный перенаправляющий объект — первый в цепочке. Более подробно:
-
Если этот сервер подключения уже связан с объектом
MBeanServer, то этот объект передается методуmbsf.setMBeanServer. Если при этом возникает исключение, этот метод выбрасывает то же исключение без каких-либо других последствий. -
Если этот подключение еще не связано с объектом
MBeanServer, или если вызовmbsf.setMBeanServerтолько что упомянутый, выполнился успешно, тогдаmbsfстановитсяMBeanServerэтого сервера подключения.
- Specified by:
-
setMBeanServerForwarderв интерфейсеJMXConnectorServerMBean - Overrides:
-
setMBeanServerForwarderв классеJMXConnectorServer - Parameters:
-
mbsf- новыйMBeanServerForwarder.
connectionOpened
protected void connectionOpened(String connectionId,
String message,
Object userData) Описание скопировано из класса: JMXConnectorServer
Вызывается подклассом при открытии нового подключения клиента. Добавляет connectionId в список, возвращаемый JMXConnectorServer.getConnectionIds(), затем генерирует JMXConnectionNotification с типом JMXConnectionNotification.OPENED.
- Overrides:
-
connectionOpenedв классеJMXConnectorServer - Parameters:
-
connectionId- идентификатор нового подключения. Он должен отличаться от идентификатора любого ранее открытого подключения этим сервером подключения. -
message- сообщение для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData- данные пользователя для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData().
connectionClosed
protected void connectionClosed(String connectionId,
String message,
Object userData) Описание скопировано из класса: JMXConnectorServer
Вызывается подклассом, когда клиентское подключение закрывается нормально. Удаляет connectionId из списка, возвращаемого JMXConnectorServer.getConnectionIds(), затем генерирует JMXConnectionNotification с типом JMXConnectionNotification.CLOSED.
- Overrides:
-
connectionClosedв классеJMXConnectorServer - Parameters:
-
connectionId- идентификатор закрытого подключения. -
message- сообщение для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData- данные пользователя для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData().
connectionFailed
protected void connectionFailed(String connectionId,
String message,
Object userData) Описание скопировано из класса: JMXConnectorServer
Вызывается подклассом, когда клиентское подключение терпит неудачу. Удаляет connectionId из списка, возвращаемого JMXConnectorServer.getConnectionIds(), затем генерирует JMXConnectionNotification с типом JMXConnectionNotification.FAILED.
- Overrides:
-
connectionFailedв классеJMXConnectorServer - Parameters:
-
connectionId- идентификатор неудачного подключения. -
message- сообщение для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getMessage(). -
userData- данные пользователя для генерируемогоJMXConnectionNotification. Может быть null. См.Notification.getUserData().
© 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.