Добрый вечер,
Я нахожусь в процессе написания Java-сервлета (Struts 2, Tomcat, JSP и т. Д.), Который способен выполнять довольно сложные симуляции. Это может занять до 2 минут, и вы получите график результатов. Рассчитать процент выполненного моделирования тривиально, потому что процесс работает, повторяя одни и те же вычисления 1000 раз.
Мне было бы интересно узнать, пытался ли кто-нибудь когда-либо использовать технологию на стороне клиента, чтобы дать какую-либо оценку завершенного процента. Т.е. запросите обработку сервлета, чтобы получить количество циклов, выполненных в различные моменты в течение всего моделирования. Это может быть отображено в виде бара в браузере клиента.
Любые мысли, советы, ресурсы будут высоко ценится.
Благодарность,
Alex
4 ответа
В вашей базе данных есть таблица для ведения списка симуляций вместе с вычисляемым сервером ходом.
В вашем веб-приложении используйте AJAX для запросов к серверу каждые несколько секунд (1-20 в зависимости от нагрузки - это то, с чем я бы поехал) и обновите графический индикатор выполнения. Большинство библиотек javascript имеют простые AJAX-функции, основанные на таймере, чтобы делать именно такие вещи.
Есть несколько деталей, которые необходимо выяснить, например, остаются ли завершенные симуляции в БД (может быть полезной информацией для регистрации), но в целом это должно быть довольно просто.
AJAX - это путь сюда.
Вы можете заключить свой ответ в сообщение MIME / Multipart и отправлять свои обновления, пока вы не получите полный ответ.
Bugzilla использует это в своем поиске, чтобы показать экран «Поиск ...», пока результат поиска не будет выполнен.
Если вы хотите использовать простой Struts2, вам следует взглянуть на ExecuteAndWait Interceptor .
Он работает по старому методу refresh-with-timeout . Конечно, у него более низкий коэффициент крутости, чем у некоторых AJAX, но он прост и работает (я использовал его).
Struts2 заботится (используя этот перехватчик) о выполнении метода действия (который обычно занимает много времени) в отдельном потоке и возвращает специальный результат wait
, пока работа не будет завершена. Вам просто нужно кодировать jsp, который показывает какое-то сообщение «ожидание ...» для этого результата, и заставить его обновляться до одного и того же действия, несколько раз, скажем, с двумя или тремя секундами тайм-аута. Конечно, jsp имеет доступ к свойствам действия, поэтому вы можете написать какой-нибудь метод getProgress()
для отображения сообщения о ходе выполнения или панели.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].