2012-05-07 2 views
0

사용자 세션이 지워졌는지 확인하는 데에만 사용되는 서블릿 (GWT-RPC 서블릿)이 있습니다 (세션 변수가 null인지 확인하여 확인).사용자의 Java 세션을 갱신하지 않는 하나의 서블릿이 있습니다.

문제는 사용자의 브라우저에서 타이머를 실행할 때 세션이 지워졌는지 확인하라는 요청이 30 분 동안 세션 시간대를 갱신하는 것입니다. 타이머 요청을 세션 시간 초과보다 덜 자주 시도 할 수 있습니다. 예를 들어 세션이 30 분마다 만료되고 35 분이 지나면 마지막으로 적절하게 세션이 감지되었음을 감지하는 데 최대 70 분이 걸립니다.

서블릿 요청을 통해 세션을 갱신하지 않는 방법을 알고있는 사람이 있습니까?

+0

특정 jsp에 대한 세션 생성을 비활성화하면 작동합니까? – CoolBeans

+0

서블릿입니다 – benstpierre

답변

0

서블릿 사양에서는 세션에 액세스하는 모든 요청이 세션의 마지막 액세스 시간을 업데이트해야하므로 세션의 수명이 연장됩니다. '올바른'해결책은 세션이 만료되었는지 정확히 알 필요가있는 이유에 달려 있습니다. 나는

는 "CUSTOM_LAST_SESSION_ACCESS"라는 세션 변수를 업데이트하는 서블릿 필터 만들기 ... 당신이 정말로 원하는 hwat 지금의 javax.servlet.http.HttpSessionListener

+0

GWT를 통해 모든 자바 스크립트 응용 프로그램에서 클라이언트 측 타이머를 사용하여 세션이 종료되었음을 감지하고이를 경고하거나 로그인 페이지로 리디렉션하는 팝업을 표시 할 수 있어야합니다. – benstpierre

+1

세션 청취자가 당신을 도우 려하지 않습니다. 접근 방식이 나에게 잘 어울립니다. –

0

이 있었다 나의 해결책이 생각한다. webapp에 대한 모든 요청은이 변수를 현재 시간 소인으로 갱신합니다.

세션을 무효화하지 않으면 지난 30 분 동안 해당 변수가 업데이트 된 경우 ajax를 통해 Javascript 타이머를 확인하십시오.

브라우저를 닫지 않으면 세션이 자바 스크립트 호출을 통해 무효화됩니다. 브라우저를 닫으면 표준 Java 세션 정리는 HTTP 요청이 30 분이 지나지 않아 발생합니다.

관련 문제