Индикатор выполнения для мониторинга длительной задачи в GWT
Мне нужно написать индикатор выполнения, который отслеживает ход создания очень больших файлов PDF. Мы знаем, как очень точно наблюдать за ходом создания PDF-файла на стороне сервера, но не можем найти хороший способ отслеживать состояние из браузера.
Несколько предложений..
- Создайте guid для задания, когда запрос servlet / gwt-rpc запускает задание, верните guid клиенту. Каждые x секунд запрашивают другой метод gwt-rpc с ранее возвращенным guid. Поскольку прогресс происходит в медленно выполняющемся процессе, мы помещаем статус в переменную сеанса с именем этого guid. Когда мы достигнем 100%, скачайте файл из динамически определенного местоположения и отправьте реальный файл в браузер с помощью обычного сервлета.
- Используйте ajax-push, чтобы длительное http-соединение мгновенно передавало статус.
У кого-нибудь есть предложения о том, как спроектировать надежный индикатор выполнения?
Любые предложения о том, как справиться с этим? Что касается пользовательского интерфейса, я, скорее всего, напишу свой собственный виджет, поскольку строка состояния проекта gwt-инкубатора устарела (вместе со всем проектом).
1 ответ
У нас похожий сценарий. Мы выполняем несколько заданий на сервере и во время выполнения опрашиваем сервер с идентификатором задания. Когда работа завершена, мы обновляем статус GUI до готового. Мы использовали RequestFactory, так как мы храним статус задания в базе данных. Работает отлично.