Создание и настройка сервера Jetty 9 на Java

Создание и настройка сервера Jetty 9 в Java

1. обзор

В этой статье мы поговорим о создании и настройке экземпляра Jetty программным способом.

Jetty - это HTTP-сервер и контейнер сервлетов, которые должны быть легкими и легко встраиваемыми. Мы рассмотрим, как установить и настроить один или несколько экземпляров сервера.

2. Maven Зависимости

Для начала мы хотим поместитьadd Jetty 9 with the following Maven dependencies в нашpom.xml:


    org.eclipse.jetty
    jetty-server
    9.4.8.v20171121


    org.eclipse.jetty
    jetty-webapp
    9.4.8.v20171121

3. Создание базового сервера

Вращать встроенный сервер с помощью Jetty так же просто, как написать:

Server server = new Server();
server.start();

Отключить его так же просто:

server.stop();

4. Обработчики

Теперь, когда наш сервер запущен и нам нужно указать ему, что делать с входящими запросами. Это можно сделать с помощью интерфейсаHandler.

Мы могли бы создать его сами, но Jetty уже предоставляет набор реализаций для наиболее распространенных случаев использования. Давайте посмотрим на два из них.

4.1. WebAppContextс

КлассWebAppContext позволяет делегировать обработку запроса существующему веб-приложению. Приложение может быть предоставлено либо как путь к файлу WAR, либо как путь к папке веб-приложения.

Если мы хотим выставить приложение в контексте «myApp», мы напишем:

Handler webAppHandler = new WebAppContext(webAppPath, "/myApp");
server.setHandler(webAppHandler);

4.2. HandlerCollectionс

Для сложных приложений мы даже можем указать более одного обработчика, используя классHandlerCollection.

Предположим, мы реализовали два пользовательских обработчика. Первый выполняет только операции регистрации, второй создает и отправляет реальный ответ пользователю. Мы хотим обрабатывать каждый входящий запрос с обоими в этом порядке.

Вот как это сделать:

Handler handlers = new HandlerCollection();
handlers.addHandler(loggingRequestHandler);
handlers.addHandler(customRequestHandler);
server.setHandler(handlers);

5. Соединители

Следующее, что мы хотим сделать, это настроить, какие адреса и порты будет прослушивать сервер, и добавить время простоя.

КлассServer объявляет два удобных конструктора, которые могут использоваться для привязки к определенному порту или адресу.

Хотя это может быть нормально при работе с небольшими приложениями, этого будет недостаточно, если мы хотим открыть несколько соединений на разных сокетах.

В этой ситуации Jetty предоставляет интерфейсConnector и, в частности, классServerConnector, который позволяет определять различные параметры конфигурации соединения:

ServerConnector connector = new ServerConnector(server);
connector.setPort(80);
connector.setHost("169.20.45.12");
connector.setIdleTimeout(30000);
server.addConnector(connector);

При такой конфигурации сервер будет прослушивать 169.20.45.12:80. Каждое соединение, установленное по этому адресу, будет иметь время ожидания 30 секунд.

Если нам нужно настроить другие сокеты, мы можем добавить другие разъемы.

6. Заключение

В этом кратком руководстве мы сосредоточились на том, как настроить встроенный сервер с помощью Jetty. Мы также увидели, как выполнить дальнейшую настройку с помощьюHandlers иConnectors.

Как всегда, весь используемый здесь код находится вover on GitHub.