request.getSession () против getThreadLocalRequest (). getSession () - PullRequest
4 голосов
/ 03 июня 2011

В чем разница между

request.getSession() 

и

getThreadLocalRequest().getSession()

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

Ответы [ 4 ]

6 голосов
/ 03 июня 2011

Они оба возвращают одно и то же.GWT просто сохраняет запрос, отправленный сервлетом, в локальный поток, так что вам не нужно передавать его при каждом вызове метода, и при этом иметь отдельный request для каждого вызова.

3 голосов
/ 03 июня 2011

getThreadLocalRequest () - это удобный метод для получения HttpServletRequest.

Оба request.getSession () и getThreadLocalRequest (). GetSession () возвращает один и тот же HttpSession, разница в том, как выполучить запрос HttpServletRequest.

2 голосов
/ 23 октября 2012

Разница в объеме.В частности, переменная запроса доступна только непосредственно из областей методов doGet(..), doPost(..) и т. Д. (Внутри методов).Как только поток, в котором вы находитесь, выходит из метода и входит в метод biz doSomething() и т. Д., Ваш код больше не имеет доступа к переменной запроса (область действия изменена), но getThreadLocal..() позволяет получить доступ независимо от методаВы, конечно, находитесь в той же ветке, что и doGet() и т. д.

2 голосов
/ 14 августа 2012

Основная причина заключается в том, что вы используете в своем сервлете GWT свои собственные методы RPC, которые не получают HTTPRequest в качестве параметра - в отличие от стандартных методов сервлета doGet(...), ..., doXYZ(...).Таким образом, единственный способ получить доступ к HTTPRequest - это предоставить getThreadLocalRequest() из GWT RemoteServiceServlet, который вы обычно должны расширять.

...