2015-12-09 2 views
1

У меня есть RequestMapping прослушивающий веб-запрос в моем контроллере, и всякий раз, когда кто-то посещает мою веб-страницу, он задерживает ответ 5000 миллисекунд.Является ли RequestMapping не многопоточным?

Все работает нормально, но когда я снова посещу новую вкладку в Chrome, второй запрос заканчивается задерживается на 10000 миллисекунд. Это меня смущает, Spring MVC не многопоточен? Может ли кто-нибудь сказать мне, что здесь произошло?

@RequestMapping("/view") 
@ResponseBody 

public String View() throws InterruptedException { 
    Thread.sleep(5000); 
    return "done"; 
} 

EDIT
Моя весна загрузки версия 1.2.7.RELEASE.
зависимости: spring-boot-starter-web

+0

Я не могу воспроизвести это. –

ответ

1

Вы открыли новую вкладку в сеансе, это может вызвать проблему с синхронизацией. Пока вы посмотрите в Весенних Документах, вы найдете: RequestMappingHandlerAdapter.setSynchronizeOnSession(boolean), который синхронизирует каждый контроллер с мьютексом сессии. Это может быть излишним для вашего приложения. Но он делает по крайней мере контроллеры потоками безопасными на сеансе, не блокируя других пользователей.

Надеюсь, это поможет.

+0

Hi m.aibin, спасибо за ваш ответ, я следую этому [article] (http://stackoverflow.com/questions/21705024/adding-session-synchronization-to-spring-mvc/21738309#21738309), чтобы изменить SynchronizeOnSession имущество. и я считаю, что значение по умолчанию - false, означает ли мой процесс под асинхронным? Если я установил SynchronizeOnSession в true, результаты не изменились. Я использовал неправильный путь? – GETYOU

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