我的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了吗?
答案 0 :(得分:1)
getThreadLocalRequest().getSession()
应该这样做。 RequestFactoryServlet
有一个类似的(但是静态的)getThreadLocalRequest()
方法,您可以从服务中访问该方法。
否则,你可以让Guice注入一个Provider<HttpSession>
,看看这些项目https://github.com/mgenov/injecting-request-factory和https://github.com/etiennep/injected-requestfactory是否有一些使用Guice和RequestFactory的示例代码。