Как @Inject объект HttpSession в классе сервисного уровня (DAO) в GWT с помощью Guice?

У меня есть такой грязный код в моем приложении GWT, некоторые классы моего сервисного слоя зависят от HttpSession объект. Так, например, в одном из моих DAO (который был конечной точкой GWT-RPC) у меня есть что-то вроде этого:

public class MyExampleDAO extends RemoteServiceServlet {
   public findItems() {
       // here I need to get the object session to retrieve the currently logged in user in order to query for all its items...
   }
}

Проблема в том, что в настоящее время я переношу код для использования RequestFactory. Мой DAO больше не будет конечной точкой GWT-RPC. Так что нет необходимости расширять RemoteServiceServlet тогда...

Знаете ли вы, как я могу получить/внедрить (вероятно, с помощью Guice) свою зависимость от HttpSession? Возразить, зная, что мой класс больше не расширяет RemoteServiceServlet?


person kaffein    schedule 03.06.2011    source источник


Ответы (1)


getThreadLocalRequest().getSession() должен это сделать. RequestFactoryServlet имеет аналогичный (но статический) метод getThreadLocalRequest(), к которому вы можете получить доступ из своего сервиса. В противном случае вы можете заставить Guice внедрить Provider<HttpSession>, взгляните на эти проекты https://github.com/mgenov/injecting-request-factory и https://github.com/etiennep/injected-requestfactory для примера кода, использующего Guice с RequestFactory.

person Thomas Broyer    schedule 03.06.2011
comment
большое спасибо, Томас, я попробую, я дам вам знать, когда все будет в порядке, большое спасибо за вашу помощь - person kaffein; 05.06.2011