Класс RMIServerImpl
- java.lang.Object
-
- javax.management.remote.rmi.RMIServerImpl
- Все реализованные интерфейсы:
- Closeable, AutoCloseable, Remote, RMIServer
- Прямые известные подклассы:
- RMIIIOPServerImpl, RMIJRMPServerImpl
public abstract class RMIServerImpl extends Object implements Closeable, RMIServer
Объект RMI, представляющий сервер-коннектор. Клиенты удалённого доступа могут устанавливать соединения с помощью метода newClient(Object). Этот метод возвращает объект RMI, представляющий соединение.
Пользовательский код обычно не ссылается на этот класс напрямую. Серверы подключений RMI обычно создаются с помощью класса RMIConnectorServer. Клиенты удалённого доступа обычно создают соединения либо с помощью JMXConnectorFactory, либо, создавая экземпляр RMIConnector.
Это абстрактный класс. Конкретные подклассы определяют детали объектов подключений клиентов, такие как использование JRMP или IIOP.
- С момента:
- 1.5
Конструкторы
| Конструктор и описание |
|---|
RMIServerImpl(Map<String,?> env) Создаёт новый |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
protected void |
clientClosed(RMIConnection client) Метод, вызываемый при закрытии подключения клиента, созданного методом |
void |
close() Закрывает сервер подключений. |
protected abstract void |
closeClient(RMIConnection client) Закрывает подключение клиента, созданное методом |
protected abstract void |
closeServer() Вызывается методом |
protected abstract void |
export() Экспортирует этот объект RMI. |
ClassLoader |
getDefaultClassLoader() Получает значение по умолчанию |
MBeanServer |
getMBeanServer()
|
protected abstract String |
getProtocol() Возвращает строку протокола для этого объекта. |
String |
getVersion() Версия протокола RMI Connector, поддерживаемая этим сервером коннекторов. |
protected abstract RMIConnection |
makeClient(String connectionId,
Subject subject) Создаёт новое подключение клиента. |
RMIConnection |
newClient(Object credentials) Создаёт новое подключение клиента. |
void |
setDefaultClassLoader(ClassLoader cl) Устанавливает значение по умолчанию |
void |
setMBeanServer(MBeanServer mbs) Устанавливает |
abstract Remote |
toStub() Возвращает удалённый заглушку для этого объекта сервера. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, 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()
getDefaultClassLoader
public ClassLoader getDefaultClassLoader()
Получает стандартный ClassLoader, используемый этим сервером-коннектором.
- Возвращает:
- стандартный
ClassLoader, используемый этим сервером-коннектором. - См. также:
setDefaultClassLoader(java.lang.ClassLoader)
setMBeanServer
public void setMBeanServer(MBeanServer mbs)
Устанавливает MBeanServer, к которому подключен этот сервер-коннектор. Новые клиентские подключения будут взаимодействовать с этим MBeanServer. Существующие клиентские подключения не затрагиваются.
- Параметры:
-
mbs- новыйMBeanServer. Может быть null, но новые клиентские подключения будут отклоняться, пока он им не будет установлен. - См. также:
getMBeanServer()
getMBeanServer
public MBeanServer getMBeanServer()
MBeanServer, к которому подключен этот сервер-коннектор. Это последнее значение, переданное в setMBeanServer(javax.management.MBeanServer) для этого объекта, или null, если этот метод никогда не вызывался.
- Возвращает:
MBeanServer, к которому подключён этот коннектор.- См. также:
setMBeanServer(javax.management.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 и iiop для RMI/IIOP.
- Возвращает:
- строка протокола для этого объекта.
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в интерфейсеCloseable - Определено в:
-
closeв интерфейсеAutoCloseable - Исключения:
-
IOException- еслиcloseServer()или один из вызововRMIConnection.close()бросил исключениеIOException.
closeServer
protected abstract void closeServer()
throws IOException Вызывается методом close() для закрытия сервера-коннектора. После возврата из этого метода сервер-коннектор не должен принимать новые подключения.
- Исключения:
-
IOException- если попытка закрыть сервер-коннектор не удалась.
© 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.