Класс 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 | Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
AUTHENTICATOR |
Имя атрибута, задающего средство аутентификации для сервера-коннектора. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RMIConnectorServer |
Создаёт RMIConnectorServer. |
RMIConnectorServer |
Создаёт RMIConnectorServer для указанного сервера MBean. |
RMIConnectorServer |
Создаёт RMIConnectorServer для указанного сервера MBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
JMXServiceURL |
getAddress() |
Адрес этого сервера-коннектора. |
Map |
getAttributes() |
Атрибуты этого сервера-коннектора. |
boolean |
isActive() |
Определяет, активен ли сервер-коннектор. |
void |
start() |
Активирует сервер-коннектор, то есть начинает ожидать подключения клиентов. |
void |
stop() |
Деактивирует сервер-коннектор, то есть прекращает ожидать подключения клиентов. |
JMXConnector |
toJMXConnector |
Возвращает клиентскую заглушку для этого сервера-коннектора. |
Методы, объявленные в классе JMXConnectorServer
connectionClosed, connectionFailed, connectionOpened, getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister, setMBeanServerForwarder | Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
connectionClosed |
Вызывается подклассом при нормальном закрытии клиентского соединения. |
protected void |
connectionFailed |
Вызывается подклассом при сбое клиентского соединения. |
protected void |
connectionOpened |
Вызывается подклассом при открытии нового клиентского соединения. |
String[] |
getConnectionIds() |
Список идентификаторов текущих открытых соединений с этим сервером-коннектором. |
MBeanServer |
getMBeanServer() |
Возвращает сервер MBean, к которому подключён этот сервер-коннектор. |
MBeanNotificationInfo[] |
getNotificationInfo() |
Возвращает массив, указывающий уведомления, отправляемые этим MBean. |
void |
postDeregister() |
Позволяет MBean выполнить необходимые операции после отмены его регистрации на сервере MBean. |
void |
postRegister |
Позволяет MBean выполнить необходимые операции после регистрации на сервере MBean или после сбоя регистрации. |
void |
preDeregister() |
Вызывается сервером MBean, когда регистрация этого сервера-коннектора на нём отменяется. |
ObjectName |
preRegister |
Вызывается сервером MBean, когда этот сервер-коннектор регистрируется на нём. |
void |
setMBeanServerForwarder |
Вставляет объект, перехватывающий запросы к серверу MBean, поступающие через этот сервер-коннектор. |
Методы, объявленные в классе NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addNotificationListener |
Добавляет слушателя. |
protected void |
handleNotification |
Этот метод вызывается методом sendNotification для каждого слушателя, чтобы отправить ему уведомление. |
void |
removeNotificationListener |
Удаляет слушателя из этого MBean. |
void |
removeNotificationListener |
Удаляет слушателя из этого MBean. |
void |
sendNotification |
Отправляет уведомление. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API планируется удалить в одной из будущих версий. Финализация объявлена устаревшей и планируется к удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
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
- См. также:
SERIAL_FILTER_PATTERN
public static final String SERIAL_FILTER_PATTERN
ObjectInputFilter, используемый при десериализации объектов, отправленных любым клиентом в JMXConnectorServer. Фильтр будет вызываться для каждого класса, найденного в сериализованном потоке, отправленном клиентом серверу, включая все классы, определенные JMX (например, ObjectName), все параметры методов и, если они присутствуют в потоке, все классы, на которые транзитивно ссылается сериализованное представление любого десериализованного объекта. Шаблон должен иметь тот же формат, что и в ObjectInputFilter.Config.createFilter(String). Он может задавать список разрешенных классов, список запрещенных классов, максимальную глубину десериализуемых объектов и т. д.
Чтобы фильтр работал, он должен разрешать как минимум все конкретные типы в транзитивном замыкании всех объектов, которые могут быть сериализованы при сериализации всех классов JMX, упоминаемых в качестве параметров в интерфейсе RMIConnection, а также все классы, которые client может передавать в обертке сериализованных объектов для взаимодействия с 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, что эквивалентно пустой карте. - Выбрасывает:
-
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, что эквивалентно пустой карте. -
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, что эквивалентно пустой карте. -
rmiServerImpl— реализация интерфейса RMIServer, соответствующая типу протокола, указанному в url. Если этот параметр не равен null, тип протокола, указанный в url, не ограничивается и считается допустимым. В противном случае распознается только «rmi». -
mbeanServer— MBean-сервер, к которому подключается новый сервер соединителя, или null, если он будет подключен путем регистрации в MBean-сервере в качестве MBean. - Выбрасывает:
-
IllegalArgumentException— еслиurlравен null. -
MalformedURLException— еслиurlне соответствует синтаксису соединителя RMI или его протокол не распознается данной реализацией. Если rmiServerImpl равен null, распознается только «rmi». -
IOException— если сервер соединителя по какой-либо причине не удается создать или если неизбежно возникнет ошибка при вызове его метода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.
Поведение метода при первом вызове зависит от параметров, переданных конструктору, как описано ниже.
Для экспорта сервера соединителя через RMI сначала требуется объект подкласса RMIServerImpl:
- Если конструктору был передан
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Атрибуты этого сервера соединителя.
- Возвращает:
- карту только для чтения, содержащую атрибуты этого сервера соединителя. Атрибуты, значения которых не сериализуемы, исключаются из этой карты. Если сериализуемых атрибутов нет, возвращенная карта пуста.
© 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.