Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Указание класса конфигуратора конечной точки

Java API для веб-сокетов позволяет вам настраивать, как контейнер создаёт объекты конечных точек сервера. Вы можете предоставить кастомную логику конфигурации конечной точки для:

  • доступа к деталям начального HTTP-запроса для соединения с веб-сокетом;

  • выполнения кастомной проверки заголовка HTTP Origin;

  • изменения ответ веб-сокета при установлении соединения;

  • выбора подпротокола веб-сокетов из тех, которые запрашивает клиент;

  • управления созданием и инициализацией объектов конечных точек.

Чтобы обеспечить кастомную логику конфигурации конечной точки, расширьте класс ServerEndpointConfig.Configurator и переопределите некоторые из его методов. В классе конечной точки укажите класс конфигуратора с помощью параметра configurator аннотации @ServerEndpoint.

Например, следующий класс конфигуратора делает объект запроса установления соединения доступным для объектов конечной точки:

public class CustomConfigurator extends ServerEndpointConfig.Configurator {

    @Override
    public void modifyHandshake(ServerEndpointConfig conf,
                                HandshakeRequest req,
                                HandshakeResponse resp) {

        conf.getUserProperties().put("handshakereq", req);
    }

}

Следующий класс конечной точки настраивает объекты конечных точек с помощью кастомного конфигуратора, который позволяет им получать доступ к объекту запроса установления соединения:

@ServerEndpoint(
    value = "/myendpoint",
    configurator = CustomConfigurator.class
)
public class MyEndpoint {

    @OnOpen
    public void open(Session s, EndpointConfig conf) {
        HandshakeRequest req = (HandshakeRequest) conf.getUserProperties()
                                                      .get("handshakereq");
        Map<String,List<String>> headers = req.getHeaders();
        ...
    }
}

Класс конечной точки может использовать объект запроса установления соединения для доступа к деталям исходного HTTP-запроса, таким как его заголовки или объект HttpSession.

Для получения дополнительной информации о конфигурации конечной точки см. ссылку на API для класса ServerEndpointConfig.Configurator.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)