Класс 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 |
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. Если атрибут не задан, то любой класс считается приемлемым.
- С:
- 10
- См. также:
SERIAL_FILTER_PATTERN
public static final String SERIAL_FILTER_PATTERN
ObjectInputFilter, который будет использоваться при десериализации объектов, отправленных клиенту в JMXConnectorServer. Фильтр будет вызываться для любого класса, найденного в сериализованном потоке, отправленном серверу клиентом, включая все определённые JMX классы (такие как ObjectName), все параметры методов и, если присутствуют в потоке, все классы, транзитивно ссылающиеся на сериализованную форму любого десериализованного объекта. Шаблон должен иметь тот же формат, что и в ObjectInputFilter.Config.createFilter(java.lang.String). Он может определять список разрешённых классов, список отклоняемых классов, максимальную глубину десериализованных объектов и т. д.
Для функционирования фильтр должен разрешать по крайней мере все конкретные типы в транзитивном замыкании всех объектов, которые могут быть сериализованы при сериализации всех классов JMX, указанных в качестве параметров в интерфейсе RMIConnection, плюс все классы, которые client может потребоваться передавать, обернутыми в маршаллированные объекты, для взаимодействия с зарегистрированными в MBeanServer MBeans. Это потенциально может включать все конкретные JMX OpenTypes и классы, используемые в их сериализованной форме.
Необходимо соблюдать осторожность при определении такого фильтра, так как определение слишком узкого списка разрешённых классов или слишком широкого списка отклоняемых классов может помешать законным клиентам взаимодействовать с 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-соединения или его протокол не распознаётся этой реализацией. Только "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, что эквивалентно пустому отображению. - 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:
- только для чтения карта, содержащая атрибуты этого сервера соединений. Атрибуты, значения которых не сериализуемы, исключаются из этой карты. Если сериализуемых атрибутов нет, возвращаемая карта пуста.
© 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://download.java.net/java/early_access/jdk24/docs/api/java.management.rmi/javax/management/remote/rmi/RMIConnectorServer.html