2013-10-03 2 views
0

Я использую этот код, чтобы аннулировать сеанс пользователя при закрытии браузера.GWT: сеанс invalidate при закрытии окна работает в режиме разработки, но не на самом сервере

Window.addCloseHandler(new CloseHandler<Window>() { 
    @Override 
    public void onClose(CloseEvent<Window> event) { 
     logOut();  
    }   
}); 

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

Но когда я положил мое приложение на Tomcat или любой веб-хостинга .. Эта функция перестает работать ..

любая идея ..what может быть решением

+0

У вас есть ошибки на javascript в консоли? Этот вызов RPC работает, когда вы запускаете его в tomcat? – Dilantha

+0

не вижу ошибки javascript, вызов не мог дотянуться до сервера, до этого браузер закрывается, и сообщение об ошибке связи появляется на консоли – junaidp

ответ

1

Я думаю, ваша проблема в том, что браузер закрыт до того, как вызов rcp получил возможность отправить базовый XMLHTTPRequest на сервер.

Я дал бы WindowClosingHandler шанс:

Window.addWindowClosingHandler(new ClosingHandler() { 
    @Override 
    public void onWindowClosing(ClosingEvent event) { 
    logOut(); 
    } 
}); 

Если это не сработает, попробуйте добавить родной Javascript функция, которая вызывается событием onBeforeUnload и использовать JSNI назвать ваш метод Выход().

Смежные вопросы