java HttpSessionBindingListener 맛보기.

ITWeb/개발일반 2012. 3. 22. 19:26
뭐 어찌 어찌 하다보니.. 이것도 보게 되었습니다.
그래서 테스트.. ^^;
코드는 무지 짧습니다.
서블릿 파일 하나, binding listenr 클래스 하나..

[참고사이트]


[CreateSessionBinding.java]


[SessionBindingListener.java]


※ 자, 그럼 이걸 어디에 써먹어야 할까요???
이 예제는 보시면 아시겠지만 session.setAttribute 즉 session key/value 에 binding 되면 event 가 발생하게 되는 거랍니다.
그니까.. isNew() 할때.. 필요한 걸 session 에 저장한 다음.. session expired 되거나 하면 자동으로 삭제가 되도록 필요한 기능을 구현 하면 되겠죠.
불필요한 session 을 삭제 하거나 아니면 status 등을 처리 한다거나 할때.. 별도의 listener 없이 이걸 가지고 구현 하면 쉽게 할 수 있을 듯 합니다.

배도 고프고 해서 오늘은 여기까지만.. ㅎㅎ

실행 방법은 잘 아시죠.. servlet 하나 생성 하셔서 Run on Server 하시면 되요.. 
-> http://localhost:8080/proto.session/CreateSessionBinding


[실행로그]

2012. 3. 22 오후 7:32:39 org.apache.catalina.core.ApplicationContext log

정보: BOUND to C7A16EA8F0687784DAA17367695BA501

2012. 3. 22 오후 7:32:39 org.apache.catalina.core.ApplicationContext log

정보: new session.binding : C7A16EA8F0687784DAA17367695BA501

2012. 3. 22 오후 7:33:37 org.apache.catalina.core.ApplicationContext log

정보: UNBOUND from C7A16EA8F0687784DAA17367695BA501

- 보시면 처음 페이지가 열리면 BOUND 되구요.
- Session expired 되면 UNBOUND 됩니다.
- 또는 session.setAttribute 해서 binding 하셔도 UNBOUND 됩니다.
- tomcat 의 web.xml 에서 아래 처럼 변경했습니다. (1분)

    <session-config>

        <session-timeout>1</session-timeout>

    </session-config>


역시 배고파서 작성하는 글은.. 좀 부족하내요.. ㅋㅋ
집에 와서 다시 업데이트..
위에 CreateSessionBinding 서블릿 클래스를 보시면 빨간 부분 보이시죠..
그렇습니다.
위에 설명한 "또는 session.setAttribute 해서 binding 하셔도 UNBOUND 됩니다." 는.. set 한 key 에 대해서 binding 되면 event 가 발생을 하게 되는 것입니다.
테스트가 부족했으니 내일 다시 최종 확인 결과 올리겠습니다. ㅡ.ㅡ;;

[최종테스트결과]

- 이론이 역시 맞습니다.

session.setAttribute("session.id", new SessionBindingListener(context));

- session 에 listener 를 등록해 줬기 때문에 이넘이 bound, unbound 되면 event 가 발생하게 되는 것입니다.

 
: