Класс 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, 2021, 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/17/docs/api/java.rmi/java/rmi/server/RMISocketFactory.html