Класс RMIConnectorServer

Все реализованные интерфейсы:
MBeanRegistration, NotificationBroadcaster, NotificationEmitter, JMXAddressable, JMXConnectorServerMBean
public class RMIConnectorServer
extends JMXConnectorServer

Сервер подключения API JMX, создающий подключения на основе RMI от удалённых клиентов. Обычно такие серверы создаются с помощью JMXConnectorServerFactory. Однако, специализированные приложения могут использовать этот класс напрямую, например, с объектом RMIServerImpl.

С:
1.5

Поля

Модификатор и тип Поле Описание
static String CREDENTIAL_TYPES

Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии.

Используйте CREDENTIALS_FILTER_PATTERN со строкой шаблона фильтра вместо.

static String CREDENTIALS_FILTER_PATTERN

Имя атрибута, задающего строку шаблона ObjectInputFilter для фильтрации классов, приемлемых для RMIServer.newClient() вызова удалённого метода.

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-объектов, созданных в сочетании с этим подключением.

static String SERIAL_FILTER_PATTERN

Этот атрибут определяет шаблон, из которого будет создан ObjectInputFilter, который будет использован при десериализации объектов, отправленных на JMXConnectorServer любым клиентом.

Поля, объявленные в классе 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.

Методы

Модификатор и тип Метод Описание
void start()

Активирует сервер подключения, то есть начинает прослушивание подключений клиентов.

void stop()

Деактивирует сервер подключения, то есть прекращает прослушивание подключений клиентов.

JMXConnector toJMXConnector​(Map<String,​?> env)

Возвращает строб клиента для этого сервера подключения.

Методы, объявленные в классе javax.management.remote.JMXConnectorServer

connectionClosed, connectionFailed, connectionOpened, getMBeanServer, getNotificationInfo, preDeregister, preRegister

Методы, объявленные в классе javax.management.NotificationBroadcasterSupport

addNotificationListener, handleNotification, 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, getConnectionIds, isActive, setMBeanServerForwarder

Методы, объявленные в интерфейсе javax.management.MBeanRegistration

postDeregister, postRegister

Методы, объявленные в интерфейсе javax.management.NotificationBroadcaster

removeNotificationListener

Методы, объявленные в интерфейсе javax.management.NotificationEmitter

removeNotificationListener

Поля

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 при создании сервера соединения.

См. также:
Значения константных полей

CREDENTIAL_TYPES

@Deprecated(since="10",
            forRemoval=true)
public static final String CREDENTIAL_TYPES
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Используйте CREDENTIALS_FILTER_PATTERN со строкой фильтра шаблона вместо этого.

Имя атрибута, определяющего список имен классов, приемлемых в качестве параметров для вызова удаленного метода RMIServer.newClient().

Этот список классов должен соответствовать транзитивному замыканию класса (или классов) учетных данных, используемых установленным JMXAuthenticator, связанным с реализацией RMIServer.

Если атрибут не установлен или равен null, то любой класс считается приемлемым.

См. также:
Значения константных полей

CREDENTIALS_FILTER_PATTERN

public static final String CREDENTIALS_FILTER_PATTERN

Имя атрибута, определяющего строку шаблона ObjectInputFilter для фильтрации классов, приемлемых для вызова удаленного метода RMIServer.newClient().

Шаблон фильтра должен иметь тот же формат, что и в ObjectInputFilter.Config.createFilter(java.lang.String).

Этот список разрешенных классов должен соответствовать транзитивному замыканию класса (или классов) учетных данных, используемых установленным JMXAuthenticator, связанным с реализацией RMIServer. Если атрибут не установлен, любой класс считается приемлемым.

См. также:
ObjectInputFilter, Значения константных полей

SERIAL_FILTER_PATTERN

public static final String SERIAL_FILTER_PATTERN

Этот атрибут определяет шаблон для создания ObjectInputFilter, который будет использоваться при десериализации объектов, отправленных клиентом в JMXConnectorServer.

Фильтр будет вызван для любого класса, найденного в сериализованном потоке, отправленном на сервер клиентом, включая все классы, определенные JMX (например, ObjectName), все параметры методов и, если они присутствуют в потоке, все классы, транзитивно указанные сериализованной формой любого десериализованного объекта. Шаблон должен иметь тот же формат, что и в ObjectInputFilter.Config.createFilter(java.lang.String). Он может определять белый список разрешенных классов, черный список отклоненных классов, максимальную глубину десериализованных объектов и т. д.

Для работоспособности фильтр должен допускать по крайней мере все конкретные типы в транзитивном замыкании всех объектов, которые могут быть сериализованы при сериализации всех классов JMX, указанных в качестве параметров в интерфейсе RMIConnection, плюс все классы, которые client могут потребоваться для передачи в упакованных объектах marshalled objects для взаимодействия с зарегистрированными в MBeanServer MBeans. Это потенциально может включать все конкретные JMX OpenTypes и классы, которые они используют в своей сериализованной форме.

При определении такого фильтра необходимо соблюдать осторожность, так как слишком ограниченный белый список или слишком широкий черный список могут помешать законным клиентам взаимодействовать с JMXConnectorServer.

См. также:
Значения константных полей

Конструкторы

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" является допустимым при использовании этого конструктора.
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" является допустимым при использовании этого конструктора.
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".
mbeanServer - сервер MBean, к которому подключен новый сервер соединения, или null, если он будет подключен путем регистрации в качестве MBean на сервере MBean.
Исключения:
IllegalArgumentException - если url равно null.
MalformedURLException - если url не соответствует синтаксису RMI-соединения или его протокол не распознается этой реализацией. Только "rmi" распознается, когда rmiServerImpl равно null.
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 не запущен (см. JMXConnectorServerMBean.isActive()).
IOException — если проблема с общением означает, что заглушка не может быть создана.

start

public void start()
           throws IOException

Активирует сервер подключения, то есть начинает прослушивание подключений клиентов. Вызов этого метода, когда сервер подключения уже активен, не оказывает никакого эффекта. Вызов этого метода, когда сервер подключения остановлен, вызовет IOException.

Поведение этого метода при первом вызове зависит от параметров, которые были предоставлены при создании, как описано ниже.

Во-первых, требуется объект подкласса RMIServerImpl для экспорта сервера подключения через RMI:

  • Если в конструктор был передан RMIServerImpl, он используется.
  • В противном случае, если JMXServiceURL был null или его протокол был rmi, создаётся объект типа RMIJRMPServerImpl.
  • В противном случае, реализация может создать специфичную для реализации RMIServerImpl или бросить исключение MalformedURLException.

Если заданный адрес включает URL-адрес каталога JNDI, как указано в документации пакета для javax.management.remote.rmi, то этот RMIConnectorServer будет загружаться, связывая RMIServerImpl с заданным адресом.

Если часть пути URL JMXServiceURL была пустой или содержала один слэш (/), то объект RMI не будет привязан к каталогу. Вместо этого ссылка на него будет закодирована в пути URL адреса RMIConnectorServer (возвращаемого JMXConnectorServerMBean.getAddress()). Кодировки для rmi описаны в документации пакета для javax.management.remote.rmi.

Поведение, когда путь URL не пустой и не URL каталога JNDI, или когда протокол не rmi, определяется реализацией и может включать в себя бросание исключения MalformedURLException при создании сервера подключения или при его запуске.

Исключения:
IllegalStateException — если сервер подключения не прикреплён к серверу MBean.
IOException — если сервер подключения не может быть запущен.

stop

public void stop()
          throws IOException

Деактивирует сервер подключения, то есть прекращает прослушивание подключений клиентов. Вызов этого метода также закроет все подключения клиентов, которые были установлены этим сервером. После возвращения этого метода, будь то нормально или с исключением, сервер подключения не будет создавать новых подключений клиентов.

После остановки сервера подключения его нельзя запустить повторно.

Вызов этого метода, когда сервер подключения уже остановлен, не оказывает никакого эффекта. Вызов этого метода, когда сервер подключения ещё не запущен, навсегда отключит объект сервера подключения.

Если при закрытии подключения клиента возникает исключение, это исключение не выбрасывается из этого метода. Событие JMXConnectionNotification генерируется этим MBean с идентификатором подключения, которое не удалось закрыть.

Закрытие сервера подключения — потенциально медленная операция. Например, если машина-клиент с открытым подключением зависла, операция закрытия может ожидать таймаута сетевого протокола. Вызывающие методы, которые не хотят блокироваться при закрытии, должны выполнять эту операцию в отдельном потоке.

Этот метод вызывает метод close на объекте сервера подключения RMIServerImpl.

Если RMIServerImpl был привязан к каталогу JNDI методом start, он отвязывается от каталога этим методом.

Исключения:
IOException — если сервер не может быть закрыт корректно или RMIServerImpl не может быть отвязан от каталога. При возникновении этого исключения сервер уже попытался закрыть все подключения клиентов, если это применимо; вызвать RMIServerImpl.close(); и отвязать RMIServerImpl от его каталога, если это применимо. Все подключения клиентов закрываются, за исключением тех, которые вызвали исключения при попытке их закрытия сервером.

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.management.rmi/javax/management/remote/rmi/RMIConnectorServer.html

Spec-Zone .ru
спецификации, руководства, описания, API