JSP Timingout при выполнении долгой работы - PullRequest
0 голосов
/ 08 августа 2011

У меня есть JSP, который берет файл CSV и добавляет таблицы из файла CSV в базу данных (упрощенное описание).

Целевая страница - это HTML-страница с формой для отправки файла.Когда файл передается, страница перенаправляется в JSP, который выполняет эту работу.После того, как JSP закончит обработку файла, он возвращает html-страницу следующим образом:

Line 1: Added Bob to users table - Sucess!
Line 2: Added Sarah to users table - Sucess!

Это прекрасно работает, однако я обнаружил проблему.Когда я загружаю CSV-файл большего размера в JSP (скажем, 600 строк вместо 200, что должно занять около 10-30 минут).JSP ничего не возвращает.Это остается на целевой странице неопределенно долго.Я думаю, что это из-за тайм-аута.Есть ли стандартный способ справиться с этим?Я думаю, что есть два решения, хотя я не знаю, как подойти к одному из них:

Решение 1

Увеличьте время ожидания, чтобы в конечном итоге результаты отображались.Я не уверен, что это время ожидания браузера или сервера.Я подозреваю, что это сервер, потому что браузер все еще говорит: Waiting for mySite.com/execute.jsp.

Сервер - Tomcat.

Решение 2

Пользовательский JavaScript (?) обновлять страницу каждую секунду (?), чтобы страница постоянно обновлялась по мере продвижения с сервера.Я не уверен, какие изменения нужно будет внести в сервер, чтобы приспособиться к этому или если это обычная практика.Будет полезен указатель на пример.

(я не уверен, что это решение решит проблему или просто предоставит более подробную информацию о том, где проблема не удалась).

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Решение 2 лучше.Другой вариант:

  • Создание запросов AJAX, которые будут асинхронно обновлять страницу после выполнения задания обработки.

Если вы согласны обновить всю страницу, вы можетеиспользуйте

<meta http-equiv="refresh" content="600">

И в своем коде на стороне сервера вы должны убедиться, что последующие обновления возвращаются со статусом задания обработки;вместо первоначального вызова задания обработки.

Однако, если вы не хотите перезагружать всю страницу, вам понадобится некоторая реализация Ajax, например, GWT.Очень просто написать простой DIV апдейтер, используя GWT.Просто посмотрите учебники GWT в Google.

0 голосов
/ 08 августа 2011

Я нашел учебник O'Reilly , полученный несколько лет назад.

Объясняется, как сделать строку состояния следующим образом:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...