Класс RMIConnectorServer
- Все реализованные интерфейсы:
-
MBeanRegistration,NotificationBroadcaster,NotificationEmitter,JMXAddressable,JMXConnectorServerMBean
public class RMIConnectorServer extends JMXConnectorServer
Сервер подключения JMX API, создающий подключения на основе 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. |
Поля, объявленные в классе javax.management.remote.JMXConnectorServer
AUTHENTICATOR
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RMIConnectorServer |
Создаёт RMIConnectorServer. |
RMIConnectorServer |
Создаёт RMIConnectorServer для заданного сервера MBean. |
RMIConnectorServer |
Создаёт RMIConnectorServer для заданного сервера MBean. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
JMXServiceURL |
getAddress() |
Адрес этого сервера подключения. |
Map<String, |
getAttributes() |
Атрибуты этого сервера подключения. |
boolean |
isActive() |
Определяет, активен ли сервер подключения. |
void |
start() |
Активирует сервер подключения, то есть начинает прослушивание подключений клиентов. |
void |
stop() |
Деактивирует сервер подключения, то есть прекращает прослушивание подключений клиентов. |
JMXConnector |
toJMXConnector |
Возвращает заглушку клиента для этого сервера подключения. |
Методы, объявленные в классе javax.management.remote.JMXConnectorServer
connectionClosed, connectionFailed, connectionOpened, getConnectionIds, getMBeanServer, getNotificationInfo, postDeregister, postRegister, preDeregister, preRegister, setMBeanServerForwarder
Методы, объявленные в классе javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
Подробное описание полей
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(java.lang.String)
Этот список разрешенных классов должен соответствовать транзитивному замыканию класса (или классов) учетных данных, используемых установленным JMXAuthenticator, связанным с реализацией RMIServer. Если атрибут не установлен, любой класс считается приемлемым.
- См. также:
SERIAL_FILTER_PATTERN
public static final String SERIAL_FILTER_PATTERN
ObjectInputFilter, который будет использоваться при десериализации объектов, отправленных клиентом в JMXConnectorServer. Фильтр будет вызываться для любого класса, найденного в сериализованном потоке, отправленном на сервер клиентом, включая все определенные JMX классы (такие как ObjectName), все параметры методов и, если они присутствуют в потоке, все классы, транзитивно ссылающиеся на сериализованную форму любого десериализованного объекта. Шаблон должен иметь тот же формат, что и в ObjectInputFilter.Config.createFilter(java.lang.String). Он может определять разрешенный список разрешенных классов, список запрещенных классов, максимальную глубину десериализованных объектов и т. п.
Для работоспособности фильтр должен разрешать, по крайней мере, все конкретные типы в транзитивном замыкании всех объектов, которые могут быть сериализованы при сериализации всех классов JMX, указанных в качестве параметров в интерфейсе RMIConnection, плюс все классы, которые client может потребоваться передать, обернутые в объекты-маршаллированные объекты, для взаимодействия с зарегистрированными в MBeanServer MBean. Это потенциально может включать все конкретные 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завершится неудачно. - См. также:
Подробное описание методов
toJMXConnector
public JMXConnector toJMXConnector(Map<String,?> env) throws IOException
Возвращает клиентский заглушку для этого сервера соединений. Клиентская заглушка — это сериализуемый объект, чёй метод connect может быть использован для создания нового соединения с этим сервером соединений.
- Specified by:
-
toJMXConnectorin interfaceJMXConnectorServerMBean - Overrides:
-
toJMXConnectorin classJMXConnectorServer - Parameters:
-
env- параметры клиентского подключения того же типа, что могут быть предоставлены методуJMXConnector.connect(Map). Может быть null, что эквивалентно пустому map. - Returns:
- клиентская заглушка, которая может быть использована для создания нового подключения к этому серверу соединений.
- Throws:
-
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 при создании или запуске сервера соединений.
- Throws:
-
IllegalStateException- если сервер соединений не присоединен к серверу MBean. -
IOException- если сервер соединений не может быть запущен.
stop
public void stop() throws IOException
Деактивирует сервер соединений, то есть прекращает прослушивание подключений клиентов. Вызов этого метода также закроет все клиентские подключения, созданные этим сервером. После возвращения этого метода, независимо от того, нормального завершения или с исключением, сервер соединений не будет создавать новые клиентские подключения.
После остановки сервера соединений его невозможно запустить снова.
Вызов этого метода, когда сервер соединений уже остановлен, не имеет эффекта. Вызов этого метода, когда сервер соединений ещё не запущен, отключит объект сервера соединений навсегда.
Если закрытие клиентского подключения вызывает исключение, это исключение не бросается из этого метода. Из этого MBean испускается JMXConnectionNotification с идентификатором подключения, которое не удалось закрыть.
Закрытие сервера соединений — потенциально медленная операция. Например, если клиентский компьютер с открытым подключением завис, операция закрытия может ожидать таймаута сетевого протокола. Вызывающие методы, не желающие блокироваться при закрытии, должны выполнять его в отдельном потоке.
Этот метод вызывает метод 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:
- только для чтения map, содержащий атрибуты этого сервера соединений. Атрибуты, значения которых не сериализуемы, опускаются из этой карты. Если сериализуемых атрибутов нет, возвращаемая карта пуста.
© 1993, 2021, 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/17/docs/api/java.management.rmi/javax/management/remote/rmi/RMIConnectorServer.html