Spec-Zone.ru › OpenJDK 25

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

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

Начиная с:
1.5

Краткое описание полей

Модификатор и тип Поле Описание
static final String CREDENTIALS_FILTER_PATTERN
Имя атрибута, задающего строку шаблона ObjectInputFilter для фильтрации классов, допустимых при удаленном вызове метода RMIServer.newClient().
static final String JNDI_REBIND_ATTRIBUTE
Имя атрибута, задающего, должен ли заглушка RMIServer, представляющая сервер соединений RMI, переопределять существующую заглушку с тем же адресом.
static final String RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE
Имя атрибута, задающего RMIClientSocketFactory для объектов RMI, создаваемых совместно с этим соединителем.
static final String RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE
Имя атрибута, задающего RMIServerSocketFactory для объектов RMI, создаваемых совместно с этим соединителем.
static final String SERIAL_FILTER_PATTERN
Этот атрибут задает шаблон, по которому создается ObjectInputFilter, используемый при десериализации объектов, отправляемых любым клиентом в JMXConnectorServer.

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

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

Модификатор и тип Метод Описание
JMXServiceURL getAddress()
Адрес этого сервера соединений.
Map<String,?> getAttributes()
Атрибуты этого сервера соединений.
boolean isActive()
Определяет, активен ли сервер соединений.
void start()
Активирует сервер соединений, то есть начинает ожидать подключения клиентов.
void stop()
Деактивирует сервер соединений, то есть прекращает ожидать подключения клиентов.
JMXConnector toJMXConnector(Map<String,?> env)
Возвращает клиентскую заглушку для этого сервера соединений.

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

connectionClosed, connectionFailed, connectionOpened, getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister, setMBeanServerForwarder

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

addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification

Методы, объявленные в классе 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, передаваемом при создании сервера соединений.

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

CREDENTIALS_FILTER_PATTERN

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

Шаблон фильтра должен иметь тот же формат, что и используемый в ObjectInputFilter.Config.createFilter(String).

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

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

SERIAL_FILTER_PATTERN

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

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

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

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

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

Подробное описание конструкторов

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 или его протокол не распознается этой реализацией. Если rmiServerImpl равен null, распознается только "rmi".
IOException — если сервер соединений по какой-либо причине не может быть создан или заведомо известно, что его метод start завершится ошибкой.
См. также:
  • start()

Подробное описание методов

toJMXConnector

public JMXConnector toJMXConnector(Map<String,?> env) throws IOException

Возвращает клиентскую заглушку для этого сервера соединений. Клиентская заглушка — это сериализуемый объект, метод connect которого можно использовать для создания одного нового соединения с этим сервером соединений.

Определено в:
toJMXConnector в интерфейсе JMXConnectorServerMBean
Переопределяет:
toJMXConnector в классе JMXConnectorServer
Параметры:
env — параметры клиентского соединения того же типа, что и параметры, передаваемые в JMXConnector.connect(Map). Может быть null, что эквивалентно пустой карте.
Возвращает:
клиентскую заглушку, которую можно использовать для создания нового соединения с этим сервером соединений.
Исключения:
UnsupportedOperationException — если этот сервер соединений не поддерживает создание клиентских заглушек.
IllegalStateException — если JMXConnectorServer не запущен (см. 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, задающей путь (возвращается методом getAddress()). Форматы кодирования для rmi описаны в документации пакета javax.management.remote.rmi.

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

Исключения:
IllegalStateException — если сервер соединений не подключен к серверу MBean.
IOException — если сервер соединений не удается запустить.

stop

public void stop() throws IOException

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

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

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

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

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

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

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

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

isActive

public boolean isActive()
Описание скопировано из интерфейса: JMXConnectorServerMBean

Определяет, активен ли сервер соединений. Сервер соединений становится активным после успешного возврата метода start и остается активным до вызова метода stop или сбоя сервера соединений.

Возвращает:
true, если сервер соединений активен.

getAddress

public JMXServiceURL getAddress()
Описание скопировано из интерфейса: JMXConnectorServerMBean

Адрес этого сервера соединений.

Возвращаемый адрес может не совпадать с исходным JMXServiceURL, переданным при создании сервера соединений, поскольку исходный адрес не всегда может быть полным. Например, номер порта может назначаться динамически при запуске сервера соединений. Возвращается фактический JMXServiceURL объекта JMXConnectorServer. Именно этот адрес клиенты передают методу JMXConnectorFactory.connect(JMXServiceURL).

Обратите внимание: возвращаемое значение может быть null, если JMXConnectorServer еще не active.

Возвращает:
адрес этого сервера соединений или null, если у него нет адреса.

getAttributes

public Map<String,?> getAttributes()
Описание скопировано из интерфейса: JMXConnectorServerMBean

Атрибуты этого сервера соединений.

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.management.rmi/javax/management/remote/rmi/RMIConnectorServer.html

Spec-Zone.ru

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