2013-01-16 1 views
0

로그인 후 jaxws에 연결할 수있는 webservice가 있습니다. 모든 것이 완벽하게 작동하며 로그인과 비밀번호를 전달하고 로그인했습니다. WS 서버에서이 사용자에 대한 세션을 만들고 있습니다. 결국 나는 모든 세션 속성을 삭제하고 session.invalidate()를 호출한다.Tomcat은 session.invalidate()를 호출 한 후 세션을 무효화하지 않습니다.

속성이 제거되었지만 tomcat 관리자를 입력하면 세션이 계속 표시됩니다.

내가 로그인했을 때 세션은 setMaxInactiveInterval을 7200 초 (2 시간)로 설정했습니다. 이 시간이 지나면 세션이 삭제되지만 더 이상 세션을 사용하지 않으면 빈 세션을 2 시간 동안 유지하는 의미가 무엇입니까?

해당 세션을 완전하게 파괴 할 수있는 방법이 있습니까? 2 시간을 기다리지 않고?

+0

"로그 아웃"웹 서비스 요청이 있습니까? 세션 속성을 삭제하지 않아도됩니다. 세션을 무효화하면이를 수행해야합니다. HttpSessionListener 또는 HttpSessionBindingListener 객체가 등록되어 있습니까? 그렇다면 실제로 세션이 만료되는 Tomcat의 기능을 방해 할 수 있습니다. 2 시간을 기다릴 필요가 없습니다. –

+0

등록 된 두 명의 리스너가 없습니다. 네, 일종의 로그 아웃입니다. 나는 2 시간을 기다릴 필요가 없다는 것을 안다. 그러나 여전히 세션은 활동 중이다. 세션에서 속성을 제거하는 부분을 제거합니다. –

+0

현재 disconnect() 메소드에 session.setMaxInactiveInterval (1)이 있고 세션이 30 초 ~ 1 분 후에 소멸됩니다. 2 시간 후에는 더 좋지만 확실한 해결책은 아닙니다. 이 메소드에 session.invalidate()를 추가하면 30 분 후에 세션이 만료됩니다. 왜 그런 일이 벌어지는 지 모르지만 세션은 파기해야하지만 그렇지 않습니다 :/ –

답변

0

확실히 subsecquent 요청이 세션을-인스턴스를 다시는 안하려면 당신의 응답

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
response.setHeader("Pragma", "no-cache"); 
response.setDateHeader("Expires", 0); 

에서 다음을 시도하십시오.

+0

네,하지만 웹 서비스예요 정말 그 위치를 모르겠습니다. 클라이언트 측 또는 서버 측에서? 응답 객체에 대한 참조는 어떻게 얻을 수 있습니까? –

+0

서버 측, 그리고 HttpSession에 대해 이야기하지 않으십니까? – TheWhiteRabbit

+0

예, HttpSession에 대해 이야기하고 있지만 웹 서비스에 대해 이야기하고 있습니다. 세션 유지를 위해이 솔루션을 사용하고 있습니다 : http://weblogs.java.net/blog/ramapulavarthi/archive/2006/06/maintaining_ses.html. –

관련 문제