Мне нужно создать приложение Java EE, которое конвертирует большие документы в разные форматы. Каждое преобразование занимает от 10 секунд до 2 минут. Запросы SOAP будут сделаны из клиентского приложения, которое я также должен создать.
Какой лучший способ справиться с этими длинными запросами? Очевидно, что процесс занимает много времени, чтобы работать без обратной связи с пользователем.
Я могу думать о следующих способах предоставления какой-либо обратной связи, но я не уверен, нет ли лучшего способа, возможно, что-то стандартизованного.
- Клиент выполняет запрос из потока, и сервер отправляет документ в ответ, что может занять несколько минут. До тех пор клиент показывает сообщение "Подождите", прокрутите счетчик и т.д. (Это кажется простым в реализации.)
- Клиент отправляет команду "Начать преобразование". Сервер возвращает какой-то идентификатор задания, который клиент может использовать для частого опроса для обновления статуса или окончательного документа. (Это кажется удобным для пользователя, потому что я могу показать прогресс, но также требует, чтобы сервер был работоспособным.)
- Клиент отправляет команду "Начать преобразование". Сервер как-то уведомляет клиента о его завершении. (Здесь я даже не знаю, как это сделать)
Существуют ли другие подходы? Какой из них является лучшим с точки зрения производительности, стабильности, отказоустойчивости, удобства пользователя и т.д.?
Спасибо за ваши ответы.