Класс RMISocketFactory
- java.lang.Object
-
- java.rmi.server.RMISocketFactory
- Все реализованные интерфейсы:
-
RMIClientSocketFactory,RMIServerSocketFactory
public abstract class RMISocketFactory extends Object implements RMIClientSocketFactory, RMIServerSocketFactory
Экземпляр RMISocketFactory используется средой выполнения RMI для получения сокетов клиента и сервера для вызовов RMI. Приложение может использовать метод setSocketFactory для запроса использования экземпляра своего фабрики сокетов средой выполнения RMI вместо реализации по умолчанию.
Реализация фабрики сокетов по умолчанию создаёт прямое сокет-соединение с удалённым хостом.
Реализация фабрики сокетов по умолчанию создаёт сокеты сервера, привязанные к широковещательному адресу, который принимает запросы со всех сетевых интерфейсов.
- Примечание об имплементации:
-
Вы можете использовать класс
RMISocketFactoryдля создания сокета сервера, привязанного к конкретному адресу, ограничивая происхождение запросов. Например, следующий код реализует фабрику сокетов, которая привязывает сокеты сервера к IPv4-адресу обратной связи. Это ограничивает RMI обработкой запросов только от локального хоста.class LoopbackSocketFactory extends RMISocketFactory { public ServerSocket createServerSocket(int port) throws IOException { return new ServerSocket(port, 5, InetAddress.getByName("127.0.0.1")); } public Socket createSocket(String host, int port) throws IOException { // just call the default client socket factory return RMISocketFactory.getDefaultSocketFactory() .createSocket(host, port); } } // ... RMISocketFactory.setSocketFactory(new LoopbackSocketFactory());Установите системную переменнуюjava.rmi.server.hostnameна127.0.0.1, чтобы гарантировать, что сгенерированные заместители подключаются к нужному сетевому интерфейсу. - С:
- 1.1
Конструкторы
| Конструктор | Описание |
|---|---|
RMISocketFactory() | Создаёт экземпляр |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ServerSocket | createServerSocket(int port) | Создаёт сокет сервера на указанном порту (порт 0 указывает анонимный порт). |
abstract Socket | createSocket(String host,
int port) | Создаёт сокет клиента, подключённый к указанному хосту и порту. |
static RMISocketFactory | getDefaultSocketFactory() | Возвращает ссылку на фабрику сокетов по умолчанию, используемую этой реализацией RMI. |
static RMIFailureHandler | getFailureHandler() | Возвращает обработчик для обработки ошибок при создании сокета, установленный методом |
static RMISocketFactory | getSocketFactory() | Возвращает фабрику сокетов, установленную методом |
static void | setFailureHandler(RMIFailureHandler fh) | Устанавливает обработчик ошибок, который будет вызываться средой выполнения RMI, если создание сокета сервера завершится неудачей. |
static void | setSocketFactory(RMISocketFactory fac) | Устанавливает глобальную фабрику сокетов, из которой RMI получает сокеты (если удалённый объект не связан с конкретной фабрикой сокетов клиента и/или сервера). |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitКонструкторы
RMISocketFactory
public RMISocketFactory()
Создаёт экземпляр RMISocketFactory.
- С:
- 1.1
Методы
createSocket
public abstract Socket createSocket(String host,
int port)
throws IOExceptionСоздаёт сокет клиента, подключённый к указанному хосту и порту.
- Установлено в:
-
createSocketв интерфейсеRMIClientSocketFactory - Параметры:
-
host- имя хоста -
port- номер порта - Возвращает:
- сокет, подключённый к указанному хосту и порту.
- Исключения:
-
IOException- если при создании сокета произошла ошибка ввода-вывода - С:
- 1.1
createServerSocket
public abstract ServerSocket createServerSocket(int port)
throws IOExceptionСоздаёт сокет сервера на указанном порту (порт 0 указывает анонимный порт).
- Установлено в:
-
createServerSocketв интерфейсеRMIServerSocketFactory - Параметры:
-
port- номер порта - Возвращает:
- сокет сервера на указанном порту
- Исключения:
-
IOException- если при создании сокета сервера произошла ошибка ввода-вывода - С:
- 1.1
setSocketFactory
public static void setSocketFactory(RMISocketFactory fac)
throws IOExceptionУстанавливает глобальную фабрику сокетов, из которой RMI получает сокеты (если удалённый объект не связан с конкретной фабрикой сокетов клиента и/или сервера). Фабрика сокетов RMI может быть установлена только один раз. Примечание: RMISocketFactory может быть установлен только в том случае, если текущий менеджер безопасности разрешает установку фабрики сокетов; если запрещено, будет выброшено исключение SecurityException.
- Параметры:
-
fac- фабрика сокетов - Исключения:
-
IOException- если фабрика сокетов RMI уже установлена -
SecurityException- если менеджер безопасности существует, и его методcheckSetFactoryне разрешает операцию. - С:
- 1.1
- См. также:
-
getSocketFactory(),SecurityManager.checkSetFactory()
getSocketFactory
public static RMISocketFactory getSocketFactory()
Возвращает фабрику сокетов, установленную методом setSocketFactory. Возвращает null, если фабрика сокетов не была установлена.
- Возвращает:
- фабрику сокетов
- С:
- 1.1
- См. также:
setSocketFactory(RMISocketFactory)
getDefaultSocketFactory
public static RMISocketFactory getDefaultSocketFactory()
Возвращает ссылку на фабрику сокетов по умолчанию, используемую этой реализацией RMI. Это будет фабрика, используемая средой выполнения RMI, когда getSocketFactory возвращает null.
- Возвращает:
- стандартную фабрику сокетов RMI
- С:
- 1.1
setFailureHandler
public static void setFailureHandler(RMIFailureHandler fh)
Устанавливает обработчик ошибок, который будет вызываться средой выполнения RMI, если создание сокета сервера завершится неудачей. По умолчанию, если обработчик ошибок не установлен, и создание сокета сервера завершается неудачей, среда выполнения RMI пытается повторно создать сокет сервера.
Если существует менеджер безопасности, этот метод сначала вызывает метод менеджера безопасности checkSetFactory для проверки разрешения операции. Это может привести к исключению SecurityException.
- Параметры:
-
fh- обработчик ошибок - Исключения:
-
SecurityException- если менеджер безопасности существует, и его методcheckSetFactoryне разрешает операцию. - С:
- 1.1
- См. также:
-
getFailureHandler(),RMIFailureHandler.failure(Exception)
getFailureHandler
public static RMIFailureHandler getFailureHandler()
Возвращает обработчик ошибок при создании сокета, установленный методом setFailureHandler.
- Возвращает:
- обработчик ошибок
- С:
- 1.1
- См. также:
setFailureHandler(RMIFailureHandler)
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.rmi/java/rmi/server/RMISocketFactory.html