Поддерживает ли конвейерную обработку com.sun.net.httpserver.HttpServer? - PullRequest
1 голос
/ 19 января 2011

Поддерживает ли com.sun.net.httpserver.HttpServer конвейеризацию с одним соединением? Кажется, он обрабатывает несколько клиентов параллельно, но запросы одного соединения выполняются последовательно.

Точно ли это, и если да, есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 20 января 2011

HTTP-конвейеризация означает нечто очень простое: клиент может написать следующий запрос на соединение, не прочитав предыдущий ответ.

Для любого http-сервера действительно трудно не поддерживать конвейеризацию. Он должен смотреть в будущее, и если он находит байты, доступные за пределами текущего запроса, он должен прервать работу ... но это смешно, и никто этого не делает.

Это не имеет никакого отношения к тому, как запросы обрабатываются сервером - последовательно или параллельно. Делать это параллельно, конечно, сложнее, и есть некоторые вопросы, которые необходимо решить.

0 голосов
/ 20 января 2011

HTTP-серверы, совместимые с HTTP 1.1, должны поддерживать конвейерную обработку.Обратите внимание, что конвейерная обработка также должна поддерживаться клиентом.
Согласно httpserver

API обеспечивает частичную реализацию RFC 2616 (HTTP 1.1) и RFC 2818 (HTTP over TLS).

, похоже, подразумевает, что com.sun.net.httpserver.HttpServer не полностью поддерживает HTTP1.1.
HttpURLConnection не поддерживает конвейерную обработку, и поэтому я склонен думать, чтоcom.sun.net.httpserver.HttpServer также не поддерживает конвейерную обработку.
Вы говорите, что провели несколько тестов.Как вы это проверили?

Обновление :
Судя по примечанию, поддерживается конвейерная обработка.
Если, как вы говорите, вы отправляете запросы по конвейеру, ответы должны возвращаться в соответствии с поступлениемзапросов (не зависит от времени, необходимого для завершения каждого запроса, т.е. некоторые из них выполняются быстрее, чем другие).

...