Класс 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() |
Возвращает удалённую заглушку для этого объекта сервера. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Определяет, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения определённого промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо истечения определённого промежутка реального времени. |
Подробное описание конструкторов
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, поддерживаемая этим сервером соединителя. Это строка следующего формата:
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.