Класс 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(javax.management.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 для RMI/JRMP.
- Возвращает:
- строку протокола для этого объекта.
clientClosed
protected void clientClosed(RMIConnection client) throws IOException
Метод, вызываемый при закрытии клиентского подключения, созданного методом makeClient. Подкласс, определяющий makeClient, должен организовать вызов этого метода при вызове метода close результатного объекта. Это позволяет удалить его из списка подключений RMIServerImpl. Не является ошибкой, если client не находится в этом списке.
После удаления client из списка подключений этот метод вызывает closeClient(client).
- Параметры:
-
client- клиентское подключение, которое было закрыто. - Исключение:
-
IOException- если методcloseClient(javax.management.remote.rmi.RMIConnection)вызывает это исключение. -
NullPointerException- еслиclientравно null.
close
public void close() throws IOException
Закрывает этот сервер подключения. Этот метод сначала вызывает метод closeServer(), чтобы новые подключения клиентов не принимались. Затем для каждого оставшегося объекта RMIConnection, возвращаемого методом makeClient, вызывается его метод close.
Поведение при вызове этого метода более одного раза не определено.
Если метод closeServer() вызывает исключение 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://download.java.net/java/early_access/jdk24/docs/api/java.management.rmi/javax/management/remote/rmi/RMIServerImpl.html