Класс 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 String | CREDENTIAL_TYPES | Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии. Используйте CREDENTIALS_FILTER_PATTERN со строкой шаблона фильтра вместо. |
static String | CREDENTIALS_FILTER_PATTERN | Имя атрибута, задающего строку шаблона |
static String | JNDI_REBIND_ATTRIBUTE | Имя атрибута, указывающего, должен ли |
static String | RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE | Имя атрибута, указывающего |
static String | RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE | Имя атрибута, указывающего |
static String | SERIAL_FILTER_PATTERN | Этот атрибут определяет шаблон, из которого будет создан |
Поля, объявленные в классе javax.management.remote.JMXConnectorServer
AUTHENTICATOR Конструкторы
| Конструктор | Описание |
|---|---|
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment) | Создаёт |
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
MBeanServer mbeanServer) | Создаёт |
RMIConnectorServer(JMXServiceURL url,
Map<String,?> environment,
RMIServerImpl rmiServerImpl,
MBeanServer mbeanServer) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 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