2013-06-02 37 views
0

我在GWT RPC Servlet中有一個登錄方法,它從會話上下文獲取用戶,並因此確定用戶是否登錄。我想將此方法移植到請求工廠方法(以獲取代理實體而不是DTO)。使用gwt請求工廠的會話上下文

但我可以在哪裏放置它?我不能將它放在實體中,因爲我沒有會話上下文。這裏有什麼正確的方法?

我RPC方法目前看起來是這樣的:

@Override 
public UserDTO isLoggedIn() { 
    // TODO Auto-generated method stub 

    HttpSession session = getThreadLocalRequest().getSession(); 

    String userName = (String)session.getAttribute("userName"); 

    if(userName !=null){ 
     return new UserDTO(userName); 
    } 
    return null; 
} 

回答

2

RequestFactory還提供了訪問請求和servlet上下文方法

HttpSession session = com.google.web.bindery.requestfactory.server.RequestFactoryServlet.getThreadLocalRequest().getSession(); 

文檔可以在這裏找到:

http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/web/bindery/requestfactory/server/RequestFactoryServlet.html#getThreadLocalRequest()

+0

是的,但我不直接訪問該servlet來自客戶端。我只是與代理實體進行交互,並且他們不瞭解servlet。 – jan

+0

正是,@jan - 這是服務器代碼。在RPC中,你編寫一個servlet,但重用客戶端和服務器的相同DTO,但在RF中,服務器上有實體,客戶端上有代理。在服務器上(唯一可用的地方會話),您可以調用上面列出的方法。沒有客戶端可以理解的會話數據,因爲所有會話都駐留在服務器上。 –

+0

我意識到這一點,但我不確定如何在請求工廠工作流程中集成方法 – jan