Класс 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 ServerSocketcreateServerSocket​(int port)

Создаёт сокет сервера на указанном порту (порт 0 указывает анонимный порт).

abstract SocketcreateSocket​(String host, int port)

Создаёт сокет клиента, подключённый к указанному хосту и порту.

static RMISocketFactorygetDefaultSocketFactory()

Возвращает ссылку на фабрику сокетов по умолчанию, используемую этой реализацией RMI.

static RMIFailureHandlergetFailureHandler()

Возвращает обработчик для обработки ошибок при создании сокета, установленный методом setFailureHandler.

static RMISocketFactorygetSocketFactory()

Возвращает фабрику сокетов, установленную методом setSocketFactory.

static voidsetFailureHandler​(RMIFailureHandler fh)

Устанавливает обработчик ошибок, который будет вызываться средой выполнения RMI, если создание сокета сервера завершится неудачей.

static voidsetSocketFactory​(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

Spec-Zone .ru
спецификации, руководства, описания, API