Класс RMIServerImpl
- Все реализуемые интерфейсы:
Closeable, AutoCloseable, Remote, RMIServer
- Прямые известные подклассы:
RMIJRMPServerImpl
public abstract class RMIServerImpl extends Object implements Closeable, RMIServer
Объект RMI, представляющий сервер соединений. Удалённые клиенты могут устанавливать соединения с помощью метода newClient(Object). Этот метод возвращает объект RMI, представляющий соединение.
Пользовательский код обычно не обращается к этому классу напрямую. Серверы соединений RMI обычно создаются с помощью класса RMIConnectorServer. Удалённые клиенты обычно создают соединения с помощью JMXConnectorFactory или создавая экземпляр RMIConnector.
Это абстрактный класс. Конкретные подклассы определяют детали объектов клиентских соединений.
- Начиная с версии:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RMIServerImpl |
Создаёт новый RMIServerImpl. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
clientClosed |
Метод, вызываемый при закрытии клиентского соединения, созданного методом makeClient. |
void |
close() |
Закрывает этот сервер соединений. |
protected abstract void |
closeClient |
Закрывает клиентское соединение, созданное методом makeClient. |
protected abstract void |
closeServer() |
Вызывается методом close() для закрытия сервера соединений. |
protected abstract void |
export() |
Экспортирует этот объект RMI. |
ClassLoader |
getDefaultClassLoader() |
Возвращает загрузчик классов по умолчанию ClassLoader, используемый этим сервером соединений. |
MBeanServer |
getMBeanServer() |
MBeanServer, к которому подключён этот сервер соединений. |
protected abstract String |
getProtocol() |
Возвращает строку протокола для этого объекта. |
String |
getVersion() |
Версия протокола RMI Connector, поддерживаемая этим сервером соединений. |
protected abstract RMIConnection |
makeClient |
Создаёт новое клиентское соединение. |
RMIConnection |
newClient |
Создаёт новое клиентское соединение. |
void |
setDefaultClassLoader |
Устанавливает загрузчик классов по умолчанию ClassLoader для этого сервера соединений. |
void |
setMBeanServer |
Устанавливает MBeanServer, к которому подключён этот сервер соединений. |
abstract Remote |
toStub() |
Возвращает удалённую заглушку для этого объекта сервера. |
Подробное описание конструкторов
RMIServerImpl
public RMIServerImpl(Map<String,?> env)
Создаёт новый RMIServerImpl.
- Параметры:
-
env— среда, содержащая атрибуты для новогоRMIServerImpl. Может быть null, что эквивалентно пустой Map.
Подробное описание методов
export
protected abstract void export() throws IOException
Экспортирует этот объект RMI.
- Исключения:
-
IOException— если этот объект RMI не удаётся экспортировать.
toStub
public abstract Remote toStub() throws IOException
- Возвращает:
- удалённую заглушку.
- Исключения:
-
IOException— если получить заглушку не удаётся, например если RMIServerImpl ещё не был экспортирован.
setDefaultClassLoader
public void setDefaultClassLoader(ClassLoader cl)
Устанавливает загрузчик классов по умолчанию ClassLoader для этого сервера соединений. Новые клиентские соединения будут использовать этот загрузчик классов. Существующие клиентские соединения не затрагиваются.
- Параметры:
-
cl— новый загрузчик классовClassLoader, который будет использоваться этим сервером соединений. - См. также:
getDefaultClassLoader
public ClassLoader getDefaultClassLoader()
Возвращает загрузчик классов по умолчанию ClassLoader, используемый этим сервером соединений.
- Возвращает:
- загрузчик классов по умолчанию
ClassLoader, используемый этим сервером соединений. - См. также:
setMBeanServer
public void setMBeanServer(MBeanServer mbs)
Устанавливает MBeanServer, к которому подключён этот сервер соединений. Новые клиентские соединения будут взаимодействовать с этим MBeanServer. Существующие клиентские соединения не затрагиваются.
- Параметры:
-
mbs— новыйMBeanServer. Может быть null, но пока это так, новые клиентские соединения будут отклоняться. - См. также:
getMBeanServer
public MBeanServer getMBeanServer()
MBeanServer, к которому подключён этот сервер соединений. Это последнее значение, переданное методу setMBeanServer(MBeanServer) этого объекта, либо null, если этот метод никогда не вызывался.
- Возвращает:
MBeanServer, к которому подключён этот соединитель.- См. также:
getVersion
public String getVersion()
RMIServerВерсия протокола RMI Connector, поддерживаемая этим сервером соединений. Это строка следующего формата:
protocol-version implementation-name
protocol-version представляет собой последовательность из двух или более неотрицательных целых чисел, разделённых точками (.). Реализация версии, описанной в этой документации, должна использовать здесь строку 1.0.
После версии протокола должен следовать пробел, а затем имя реализации. Формат имени реализации не определён. Рекомендуется включать в него номер версии реализации. Например, по соображениям безопасности реализация может использовать пустую строку в качестве своего имени.
- Определено в:
-
getVersionв интерфейсеRMIServer - Возвращает:
- строку в описанном здесь формате.
newClient
public RMIConnection newClient(Object credentials) throws IOException
Создаёт новое клиентское соединение. Этот метод вызывает makeClient и добавляет возвращённый объект клиентского соединения во внутренний список. При завершении работы этого RMIServerImpl посредством его метода close() вызывается метод close() каждого объекта, оставшегося в списке.
Наличие объекта клиентского соединения во внутреннем списке не препятствует его сборке мусора.
- Определено в:
-
newClientв интерфейсеRMIServer - Параметры:
-
credentials— этот объект задаёт учётные данные, определённые пользователем, которые передаются серверу для аутентификации вызывающего объекта перед созданиемRMIConnection. Может быть null. - Возвращает:
- недавно созданный
RMIConnection. Обычно это объект, созданный методомmakeClient, однако реализация может обернуть этот объект другим объектом, реализующимRMIConnection. - Исключения:
-
IOException— если новый клиентский объект не удаётся создать или экспортировать. -
SecurityException— если предоставленные учётные данные не позволяют серверу успешно аутентифицировать пользователя. -
IllegalStateException— если значениеgetMBeanServer()равно null.
makeClient
protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException
Создаёт новое клиентское соединение. Этот метод вызывается общедоступным методом newClient(Object).
- Параметры:
-
connectionId— идентификатор нового соединения. Каждое соединение, открытое этим сервером соединений, будет иметь уникальный идентификатор. Поведение не определено, если этот параметр равен null. -
subject— аутентифицированный субъект. Может быть null. - Возвращает:
- недавно созданное
RMIConnection. - Исключения:
-
IOException— если новый клиентский объект не удаётся создать или экспортировать.
closeClient
protected abstract void closeClient(RMIConnection client) throws IOException
Закрывает клиентское соединение, созданное методом makeClient.
- Параметры:
-
client— соединение, ранее возвращённое методомmakeClient, для которого методcloseClientещё не вызывался. Поведение не определено при нарушении этих условий, в том числе еслиclientравно null. - Исключения:
-
IOException— если клиентское соединение не удаётся закрыть.
getProtocol
protected abstract String getProtocol()
Возвращает строку протокола для этого объекта. Для RMI/JRMP эта строка равна rmi.
- Возвращает:
- строку протокола для этого объекта.
clientClosed
protected void clientClosed(RMIConnection client) throws IOException
Метод, вызываемый при закрытии клиентского соединения, созданного методом makeClient. Подкласс, определяющий makeClient, должен обеспечить вызов этого метода при вызове метода close результирующего объекта. Это позволяет удалить его из списка соединений RMIServerImpl. Не является ошибкой, если client отсутствует в этом списке.
После удаления client из списка соединений этот метод вызывает closeClient(client).
- Параметры:
-
client— закрытое клиентское соединение. - Исключения:
-
IOException— если методcloseClient(RMIConnection)выбрасывает это исключение. -
NullPointerException— еслиclientравно null.
close
public void close() throws IOException
Закрывает этот сервер соединений. Сначала этот метод вызывает метод closeServer(), чтобы новые клиентские соединения не принимались. Затем для каждого оставшегося объекта RMIConnection, возвращённого методом makeClient, вызывается его метод close.
Поведение при повторном вызове этого метода не определено.
Если метод closeServer() выбрасывает IOException, отдельные соединения всё равно закрываются, после чего этот метод выбрасывает IOException.
Если метод closeServer() завершается нормально, но одно или несколько отдельных соединений выбрасывают IOException, после закрытия всех соединений этот метод выбрасывает одно из этих исключений IOException. Если IOException выбрасывают несколько соединений, не определено, какое из них будет выброшено этим методом.
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеCloseable - Исключения:
-
IOException— если методcloseServer()или один из вызововRMIConnection.close()выбрасываетIOException.
closeServer
protected abstract void closeServer() throws IOException
Вызывается методом close() для закрытия сервера соединений. После завершения этого метода сервер соединений не должен принимать новые соединения.
- Исключения:
-
IOException— если попытка закрыть сервер соединений завершилась неудачей.
© 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/RMIServerImpl.html