Как обрабатывать длительные операции веб-службы?

Мне нужно создать приложение Java EE, которое конвертирует большие документы в разные форматы. Каждое преобразование занимает от 10 секунд до 2 минут. Запросы SOAP будут сделаны из клиентского приложения, которое я также должен создать.

Как лучше всего обрабатывать эти длительные запросы? Очевидно, что процесс занимает много времени без какой-либо обратной связи с пользователем.

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

Клиент выполняет запрос из потока, а сервер отправляет документ в ответ, что может занять несколько минут. До этого клиент показывает сообщение «Пожалуйста, подождите», индикатор выполнения и т. Д. (Это кажется простым для реализации.)Клиент отправляет команду «Начать преобразование». Сервер возвращает какой-тоидентификатор работы который клиент может использовать для частого опроса об обновлении статуса или окончательного документа. (Это кажется удобным для пользователя, потому что я могу отображать прогресс, но также требует, чтобы сервер был с состоянием.)Клиент отправляет команду «Начать преобразование». Сервер как-то уведомляет клиента, когда это сделано. (Здесь я даже не знаю, как это сделать)

Есть ли другие подходы? Какой из них является лучшим с точки зрения производительности, стабильности, отказоустойчивости, удобства использования и т. Д.?

Спасибо за ответ.

Ответы на вопрос(2)

Ваш ответ на вопрос