2010-01-29 3 views
1

Я использую сервер Webphere. Я выполняю загрузку файла через сервлет, используя методы Apache FileUpload.Запрос Ajax во время загрузки файла занимает много времени

Я присоединяю слушателя к этому файловому загрузочному файлу, который обновляет поле «процент», обозначающее, какой процент запроса был обработан. Запрос направляется в iframe (целью формы является iframe), так что страница, на которой запущен запрос, не должна ждать завершения ответа и, следовательно, не будет показывать пользователю только пустую страницу. Я также добавляю ссылку на слушателя прогресса на сеанс.

С страницы JSP, как только я запускаю отправку в форме, через 1 секунду, а затем каждую секунду я запускаю запрос ajax, который отправляется на сервлет, который смотрит на ProgressListener и отвечает полем процента. Процесс работает нормально, но на Websphere иногда этот запрос Ajax может занять до 30 секунд! Я тестировал одно и то же на простом сервере Tomcat, и там запрос/ответ выдается за секунду.

Что может быть неправильным? Это настройка сервера?

Спасибо,

Edit: Код внутри сервлета, который получает процент от сессии работает как только запрос был сделан. Кажется, узкое место в доставке запроса обратно в клиентский браузер.

ответ

1

У вас есть websphere, сконфигурированная для компиляции и кэширования страницы jsp, или она перекомпилируется каждый раз?

Возможно, вы захотите использовать AOP, AspectJ или Spring, или профилировщик, чтобы узнать, что происходит с вызовом ajax, чтобы вы могли отслеживать, не изменяя код на странице jsp.

Профилировщик может быть лучшей отправной точкой, так что вы можете посмотреть глобально на то, что происходит, а затем использовать аспекты для мониторинга в мелкозернистом виде и решить, где находится узкое место.

Вы также можете увидеть, поможет ли прекомпиляция страниц jsp. Этот учебник должен быть полезен: http://publib.boulder.ibm.com/infocenter/wchelp/v6r0m0/index.jsp?topic=/com.ibm.commerce.samples.doc/tutorial/tdedeployjsp.htm

+0

Проблема заключается не в том, что JSP скомпилирован/предварительно скомпилирован. Я загрузил 264 МБ-файл, который сгенерировал более одного вызова ajax, вторым вызовом ajax, любая компиляция уже выполнена. –

+0

Итак, используйте firebug, чтобы профилировать ваш вызов ajax в браузере, используйте Fiddler для отслеживания трафика и профиля сервера, чтобы узнать, что происходит на сервере. Между ними вы должны найти проблему. –

 Смежные вопросы

  • Нет связанных вопросов^_^