Spec-Zone.ru › OpenJDK 8

Класс 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

Имя атрибута, указывающего, должен ли RMIServer-заглушка, представляющая сервер RMI-соединений, перезаписывать существующую заглушку по тому же адресу.

static String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE

Имя атрибута, указывающего RMIClientSocketFactory для объектов RMI, созданных в сочетании с этим соединением.

static String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE

Имя атрибута, указывающего RMIServerSocketFactory для объектов RMI, созданных в сочетании с этим соединением.

Поля, унаследованные от класса javax.management.remote.JMXConnectorServer

AUTHENTICATOR

Краткое описание конструкторов

Конструктор и описание
RMIConnectorServer(JMXServiceURL url, Map<String,?> environment)

Создаёт RMIConnectorServer.

RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, MBeanServer mbeanServer)

Создаёт RMIConnectorServer для данного сервера MBean.

RMIConnectorServer(JMXServiceURL url, Map<String,?> environment, RMIServerImpl rmiServerImpl, MBeanServer mbeanServer)

Создаёт RMIConnectorServer для данного сервера 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)

Вызывается подклассом при открытии нового соединения клиента.

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API