2013-10-11 4 views
1

я в настоящее время работает в веб-приложение, которое будет запускать длительную процедуру работает с базой данных после того, как контроллер получил запрос (запрос в настоящее время является запрос AJAX).Java EE - Как веб-сервер обрабатывает запрос HTTP давно работает

Мой контроллер выглядит примерно так

@RequestMapping(value="/startProcedureCall.htm", method=RequestMethod.GET) 
protected void startProcedureCall(HttpServletRequest request) { 
    //do some stuff 
    //... 
    //... 
    myService.callProcedure(); //<- this procedure may run upto an hour 
    //... do some stuff 
    //... 
} 

Запрос будет оставаться в контроллере, пока myService.callProcedure() не закончит свое выполнение, которое, как было указано, что в коде комментарии могут работать ДО часа.

Меня беспокоит то, что будет веб-сервер разрешает запрос в ловушке в контроллере в течение столь длительного времени? Не приведет ли это к какой-то ошибке таймаута?

настоящее время я использую WebSphere в качестве веб-сервера.

ответ

2

Это зависит от того, как настроен ваш веб-сервер. Ресурсы, такие как this, покажут, как настроить параметры тайм-аута для вашей версии WebSphere.

Имейте в виду, что вы можете рассмотреть другую архитектуру, такую ​​как асинхронные пакетные задания (например, с помощью Spring Batch) и кэширование. Хотя бы одна мысль.

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