Я пишу веб-сервис HTTP, который может занять довольно много времени, чтобы получить результаты. Я использую встроенный Jetty 8.1.5 и JAX-RS (Apache CXF)
Я решил пойти с каким-то протоколом управления: когда приходит новый запрос, я запускаю долгоиграющую работу в отдельном потоке и периодически пишу в HttpOutputStream строки с текущим статусом ("CONTROL_MESSAGE: 42% done")
Проблема в том, что Jetty использует здесь кодирование фрагментов, поэтому мои сообщения о состоянии буферизуются и бесполезны, поскольку все они могут быть буферизованы в одном фрагменте, не обеспечивая никакого прогресса для клиента.
Я не могу использовать свойство Content-Length, так как не знаю длину конечного результата. HttpOutputStream.flush() не работает, так как Jetty использует внутренние буферы.
Насколько я понимаю, мне нужен способ сказать Jetty «пожалуйста, завершите текущий фрагмент и сбросьте его», но не знаю, как это сделать.