Класс 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() |
Создаёт экземпляр RMISocketFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ServerSocket |
createServerSocket |
Создаёт серверный сокет на указанном порту (порт 0 указывает анонимный порт). |
abstract Socket |
createSocket |
Создаёт сокет клиента, подключённый к указанному хосту и порту. |
static RMISocketFactory |
getDefaultSocketFactory() |
Возвращает ссылку на фабрику сокетов по умолчанию, используемую этой реализацией RMI. |
static RMIFailureHandler |
getFailureHandler() |
Возвращает обработчик, вызываемый при ошибке создания сокета, установленный методом setFailureHandler. |
static RMISocketFactory |
getSocketFactory() |
Возвращает фабрику сокетов, установленную методом setSocketFactory. |
static void |
setFailureHandler |
Устанавливает обработчик ошибок, который вызывается средой выполнения RMI, если создание серверного сокета завершилось ошибкой. |
static void |
setSocketFactory |
Устанавливает глобальную фабрику сокетов, из которой RMI получает сокеты (если удалённый объект не связан со специфической фабрикой клиента и/или серверного сокета). |
Подробное описание конструкторов
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
- Указано в:
-
createServerSocketв интерфейсеRMIServerSocketFactory - Параметры:
-
port- номер порта - Возвращает:
- серверный сокет на указанном порту
- Исключение:
-
IOException- если при создании серверного сокета произошла ошибка ввода/вывода - С момента:
- 1.1
setSocketFactory
public static void setSocketFactory(RMISocketFactory fac) throws IOException
- Параметры:
-
fac- фабрика сокетов - Исключение:
-
IOException- если фабрика сокетов RMI уже установлена -
SecurityException- если менеджер безопасности существует и его методcheckSetFactoryне разрешает операцию. - С момента:
- 1.1
- См. также:
getSocketFactory
public static RMISocketFactory getSocketFactory()
setSocketFactory. Возвращает null, если фабрика сокетов не была установлена.- Возвращает:
- фабрика сокетов
- С момента:
- 1.1
- См. также:
getDefaultSocketFactory
public static RMISocketFactory getDefaultSocketFactory()
getSocketFactory возвращает null. - Возвращает:
- фабрика сокетов RMI по умолчанию
- С момента:
- 1.1
setFailureHandler
public static void setFailureHandler(RMIFailureHandler fh)
Если существует менеджер безопасности, этот метод сначала вызывает метод checkSetFactory менеджера безопасности, чтобы убедиться, что операция разрешена. Это может привести к исключению SecurityException.
- Параметры:
-
fh- обработчик ошибок - Исключение:
-
SecurityException- если менеджер безопасности существует и его методcheckSetFactoryне разрешает операцию. - С момента:
- 1.1
- См. также:
getFailureHandler
public static RMIFailureHandler getFailureHandler()
setFailureHandler. - Возвращает:
- обработчик ошибок
- С момента:
- 1.1
- См. также:
© 1993, 2023, 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/21/docs/api/java.rmi/java/rmi/server/RMISocketFactory.html