Spec-Zone.ru › OpenJDK 8

Класс RMISocketFactory

  • java.lang.Object
    • java.rmi.server.RMISocketFactory
Все реализованные интерфейсы:
RMIClientSocketFactory, RMIServerSocketFactory

public abstract class RMISocketFactory
extends Object
implements RMIClientSocketFactory, RMIServerSocketFactory

Экземпляр RMISocketFactory используется в RMI-среде для получения клиентских и серверных сокетов для RMI-вызовов. Приложение может использовать метод setSocketFactory для запроса использования экземпляра своего сокет-фактори в RMI-среде вместо реализации по умолчанию.

Реализация сокет-фактори по умолчанию использует трёхступенчатый подход к созданию клиентских сокетов. Сначала производится попытка прямого подключения к удалённой виртуальной машине. Если это не удаётся (из-за файрвола), среда использует HTTP с явным указанием порта сервера. Если файрвол не разрешает такой тип связи, используется HTTP для cgi-скрипта на сервере для отправки RMI-вызова методом POST. Механизмы HTTP-туннелирования отключены по умолчанию. Это поведение контролируется свойством java.rmi.server.disableHttp, значение которого по умолчанию true. Установка значения этого свойства в false включит механизмы HTTP-туннелирования.

Устаревшее: HTTP-туннелирование. Механизмы HTTP-туннелирования, описанные выше, а именно HTTP с явным указанием порта и HTTP для cgi-скрипта, устарели. Эти механизмы HTTP-туннелирования могут быть удалены в будущих релизах платформы.

Реализация сокет-фактори по умолчанию создаёт серверные сокеты, привязанные к универсальному адресу, который принимает запросы со всех сетевых интерфейсов.

Примечание по реализации:

Можно использовать класс 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, чтобы убедиться, что сгенерированные заглушки подключаются к нужному сетевому интерфейсу.
С:
JDK1.1

Конструкторы

Конструктор и описание
RMISocketFactory()

Создаёт экземпляр RMISocketFactory.

Методы

Модификатор и тип Метод и описание
abstract ServerSocket createServerSocket(int port)

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

abstract Socket createSocket(String host, int port)

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

static RMISocketFactory getDefaultSocketFactory()

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

static RMIFailureHandler getFailureHandler()

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

static RMISocketFactory getSocketFactory()

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

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.

С:
JDK1.1

Методы

createSocket

public abstract Socket createSocket(String host,
                                    int port)
                             throws IOException

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

Определено в:
createSocket в интерфейсе RMIClientSocketFactory
Параметры:
host - имя хоста
port - номер порта
Возвращает:
сокет, подключенный к указанному хосту и порту.
Исключения:
IOException - если во время создания сокета произошла ошибка ввода-вывода
С:
JDK1.1

createServerSocket

public abstract ServerSocket createServerSocket(int port)
                                         throws IOException

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

Определено в:
createServerSocket в интерфейсе RMIServerSocketFactory
Параметры:
port - номер порта
Возвращает:
серверный сокет на указанном порту
Исключения:
IOException - если во время создания серверного сокета произошла ошибка ввода-вывода
С:
JDK1.1

setSocketFactory

public static void setSocketFactory(RMISocketFactory fac)
                             throws IOException

Устанавливает глобальный сокет-фактори, из которого RMI получает сокеты (если удалённый объект не связан со специфичным клиентским и/или серверным сокет-фактори). Сокет-фактори RMI может быть установлен только один раз. Примечание: RMISocketFactory может быть установлен только если текущий менеджер безопасности разрешает установку сокет-фактори; если запрещено, будет брошено исключение SecurityException.

Параметры:
fac - сокет-фактори
Исключения:
IOException - если сокет-фактори RMI уже установлен
SecurityException - если менеджер безопасности существует и его метод checkSetFactory не разрешает операцию.
С:
JDK1.1
См. также:
getSocketFactory(), SecurityManager.checkSetFactory()

getSocketFactory

public static RMISocketFactory getSocketFactory()

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

Возвращает:
сокет-фактори
С:
JDK1.1
См. также:
setSocketFactory(RMISocketFactory)

getDefaultSocketFactory

public static RMISocketFactory getDefaultSocketFactory()

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

Возвращает:
сокет-фактори RMI по умолчанию
С:
JDK1.1

setFailureHandler

public static void setFailureHandler(RMIFailureHandler fh)

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

Если существует менеджер безопасности, этот метод сначала вызывает метод менеджера безопасности checkSetFactory для проверки разрешения операции. Это может привести к SecurityException.

Параметры:
fh - обработчик сбоев
Исключения:
SecurityException - если менеджер безопасности существует и его метод checkSetFactory не разрешает операцию.
С:
JDK1.1
См. также:
getFailureHandler(), RMIFailureHandler.failure(Exception)

getFailureHandler

public static RMIFailureHandler getFailureHandler()

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

Возвращает:
обработчик сбоев
С:
JDK1.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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API