Обработка сеанса в GWT RequestFactory - PullRequest
1 голос
/ 02 октября 2011

Может кто-нибудь показать мне простой пример обработки сеанса с GWT RequestFactory.Может быть, это очень просто, но я не могу понять.

Я где-то читал, что я должен использовать ThreadLocal.Ну, я сделал.Вот мой код:

public class EC_RequestFactoryServlet extends RequestFactoryServlet {
private static final ThreadLocal < HttpServletRequest > uniqueReq =
    new ThreadLocal < HttpServletRequest > () {
        @Override protected HttpServletRequest initialValue() {
            return null;
        }
};

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
    uniqueReq.set(req);
    super.doPost(req, res);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
    uniqueReq.set(req);
    super.doGet(req, res);
}}

И это сохраняет сеанс:

public class Authentication {
public static void SetLoggedInUserToSession(User user) {
    EC_RequestFactoryServlet.getThreadLocalRequest()
            .getSession().setAttribute("LOGGED_IN_USER", user);
}

public static User GetLoggedInUserFromSession(){
    return (User)EC_RequestFactoryServlet.getThreadLocalRequest()
            .getSession().getAttribute("LOGGED_IN_USER");
}}

После входа в систему все в порядке, но после другого запроса сеанс пуст.

Так чего мне не хватает?Или это лучше?

Ответы [ 2 ]

6 голосов
/ 12 ноября 2011

Или вы можете просто использовать RequestFactoryServlet.getThreadLocalRequest().

1 голос
/ 03 октября 2011

О, это работает сейчас.Я сделал глупую ошибку где-то еще в программе.Приведенный выше код работает нормально.

...