Модуль jdk.httpserver
Пакет com.sun.net.httpserver определяет высокоуровневый API для создания серверов с поддержкой HTTP и HTTPS. Класс SimpleFileServer реализует простой файловый сервер, работающий только по HTTP и предназначенный для тестирования, разработки и отладки. Реализация по умолчанию предоставляется с помощью инструмента jwebserver — основной точки входа модуля, которую также можно вызвать с помощью java -m jdk.httpserver.
Пакет com.sun.net.httpserver.spi определяет интерфейс поставщика услуг (SPI) для поиска реализаций HTTP-сервера на основе API com.sun.net.httpserver.
Системные свойства, используемые API HTTP-сервера
Ниже приведён список системных свойств, специфичных для JDK и используемых реализацией HTTP-сервера JDK по умолчанию. Для всех указанных ниже свойств, принимающих числовые значения, используется значение по умолчанию, если задана строка, которую невозможно преобразовать в число.
sun.net.httpserver.idleInterval(по умолчанию: 30 сек)
Максимальная длительность в секундах, в течение которой неактивное соединение остаётся открытым. Точность таймера зависит от реализации, поэтому неактивные соединения могут закрываться позже указанного интервала. Значения, меньшие или равные нулю, заменяются значением по умолчанию.jdk.httpserver.maxConnections(по умолчанию: -1)
Максимальное количество одновременно открытых соединений. Учитываются как активные, так и неактивные соединения. Если значение равно нулю или отрицательное, ограничение не применяется.sun.net.httpserver.maxIdleConnections(по умолчанию: 200)
Максимальное количество одновременно неактивных соединений. Если задано нулевое или отрицательное значение, соединения закрываются после использования.sun.net.httpserver.drainAmount(по умолчанию: 65536)
Максимальное количество байтов, которые будут автоматически прочитаны и отброшены из тела запроса, не полностью обработанного егоHttpHandler. Если количество оставшихся непрочитанных байтов меньше этого предела, соединение помещается в кэш неактивных соединений. В противном случае оно закрывается.sun.net.httpserver.maxReqHeaders(по умолчанию: 200)
Максимальное количество полей заголовка, принимаемых в запросе. Если это ограничение превышено во время чтения заголовков, соединение прерывается, а запрос игнорируется. Если значение меньше или равно нулю, используется значение по умолчанию.sun.net.httpserver.maxReqHeaderSize(по умолчанию: 393216 или 384kB)
Максимальный размер секции полей заголовка, который сервер готов принять. Он вычисляется как сумма размера имени заголовка, размера значения заголовка и дополнительных 32 байтов для каждой строки секции полей. Строка запроса считается первой строкой секции полей: имя в ней пустое, а значение — вся строка. Если это ограничение превышено во время чтения заголовков, соединение прерывается, а запрос игнорируется. Если значение меньше или равно нулю, ограничение не устанавливается.sun.net.httpserver.maxReqTime(по умолчанию: -1)
Максимальное время в миллисекундах, отведённое на получение заголовков и тела запроса. На практике фактическое время зависит от размера запроса, скорости сети и задержек при обработке обработчиком. Значение, меньшее или равное нулю, означает, что время не ограничено. Если ограничение превышено, соединение прерывается, а обработчик получаетIOException. Точность таймера зависит от реализации, поэтому обработка запросов может прерываться позже указанного интервала.sun.net.httpserver.maxRspTime(по умолчанию: -1)
Максимальное время в миллисекундах, отведённое на получение заголовков и тела ответа. На практике фактическое время зависит от размера ответа, скорости сети и задержек при обработке обработчиком. Значение, меньшее или равное нулю, означает, что время не ограничено. Если ограничение превышено, соединение прерывается, а обработчик получаетIOException. Точность таймера зависит от реализации, поэтому обработка ответов может прерываться позже указанного интервала.sun.net.httpserver.nodelay(по умолчанию: false)
Логическое значение, которое при значении true устанавливает параметр сокетаTCP_NODELAYдля всех входящих соединений.-
sun.net.httpserver.pathMatcher(по умолчанию:pathPrefix)
Схема сопоставления путей, используемая для маршрутизации запросов к обработчикам контекста. Для свойства можно задать одно из следующих значений:-
pathPrefix(по умолчанию) - Путь запроса должен начинаться с пути контекста, а все совпадающие сегменты пути должны быть идентичны. Например, путь контекста
/fooбудет соответствовать путям запроса/foo,/foo/и/foo/bar, но не/foobar. stringPrefix- Строка пути запроса должна начинаться со строки пути контекста. Например, путь контекста
/fooбудет соответствовать путям запроса/foo,/foo/,/foo/barи/foobar.
Если значение пустое или недопустимое, используется значение по умолчанию.
Это свойство и возможность восстановить поведение сопоставления по префиксу строки могут быть удалены в одном из будущих выпусков.
-
- Примечание об API:
- API и SPI этого модуля разработаны и реализованы преимущественно для поддержки минимального HTTP-сервера и простой семантики HTTP.
- Примечание по реализации:
- Реализация HTTP-сервера по умолчанию, предоставляемая этим модулем, предназначена для простых задач, таких как локальное тестирование, разработка и отладка. Поэтому сервер не проектировался как полнофункциональный высокопроизводительный HTTP-сервер. До JDK 26 в реализации JDK по умолчанию карта атрибутов
HttpExchangeбыла общей с содержащим еёHttpContext. Начиная с JDK 26, по умолчанию атрибуты обмена данными относятся к отдельному обмену, а доступ к атрибутам контекста осуществляется вызовомgetHttpContext().getAttributes().
Новое системное свойствоjdk.httpserver.attributes(значение по умолчанию:"") позволяет вернуть прежнее поведение. Чтобы восстановить поведение, существовавшее до JDK 26, задайте для этого свойства значение "context". - Граф модулей:
- Руководства по инструментам:
- jwebserver
- Начиная с:
- 9
Пакеты
| Пакет | Описание |
|---|---|
| com.sun.net.httpserver | Предоставляет простой высокоуровневый API HTTP-сервера, который можно использовать для создания встраиваемых HTTP-серверов. |
| com.sun.net.httpserver.spi | Предоставляет подключаемый интерфейс поставщика услуг, позволяющий заменять реализацию HTTP-сервера другими реализациями. |
Службы
| Тип | Описание |
|---|---|
| HttpServerProvider | Класс поставщика услуг для HttpServer. |
© 1993, 2025, 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.