세션은 얼마나 지속될까?
기본 30분입니다. 웹서버마다 was마다 다른지는 모르겠지만 제가 아는 시간은 30분입니다.
실제 30분인지 테스트를 해볼까요.
아래 메소드를 RiaApp.java에 추가하고 로그인 성공했을 경우 실행되는 Success()메소드를 통해 호출해보도록 하자.
▶ 아래 코드는 60초 마다 서버에 세션이 유효한지 요청을 보내 세션을 확인하는 코드다. 진행 상태바를 통해 매분마다 1%씩 움직이도록 했다. 예상대로 세션이 30분이라면 30%까지 진행되다가 멈추게 될까? 테스트 해보면 100%를 보여주고 종료됩니다.기본 30분입니다. 웹서버마다 was마다 다른지는 모르겠지만 제가 아는 시간은 30분입니다.
실제 30분인지 테스트를 해볼까요.
아래 메소드를 RiaApp.java에 추가하고 로그인 성공했을 경우 실행되는 Success()메소드를 통해 호출해보도록 하자.
애기인 즉은 서버와 통신할 경우 세션이 유지되어 계속 access할 경우 무제한으로 사용할 수 있다는 것이다.
// RiaApp.java에 추가하세요 public void roop(){ String stime = new Date().toString(); final MessageBox box = MessageBox.progress("세션 시간 측정 중...", "시작시간은 : "+stime, "Initializing..."); final ProgressBar bar = box.getProgressBar(); final Timer t = new Timer() { float i; @Override public void run() { String stime = new Date().toString(); System.out.println("middle time: "+ stime); // continueSession(); try{ service.getSessionData( new AsyncCallback() { @Override public void onSuccess(Void result) { } @Override public void onFailure(Throwable caught) { String time = new Date().toString(); MessageBox.alert("로그인", "세션이 종료되었습니다. \n 종료시간:"+ time, btnListener); cancel(); // box.close(); } }); }catch(Throwable e){ } bar.updateProgress(i / 100, (int) i + "% Complete"); i += 1; if (i > 100) { cancel(); box.close(); } } }; t.scheduleRepeating(60000); // 60초 } // 로그인 성공 후 실행되어야 하므로 기존 onSubmit()메소드를 수정하자. public void onSubmit() { service.getSessionData( new AsyncCallback () { @Override public void onFailure(Throwable caught) { // 버튼 리스트를 설정 MessageBox.alert("로그인", "세션이 종료되었습니다. \n 다시 로그인 해주세요", btnListener); } @Override public void onSuccess(Void result) { // TODO Auto-generated method stub roop(); // 추가 } }); }
▶ 아래 처럼 진행되다가..100%를 채우고 종료된다...
로그를 보면 세션유지시간은 30분이지만 계속 연장되어진다.
----------------------------------------------
middle time: Thu Mar 10 12:44:17 KST 2011
로그인 아이디는 : benneykwag@gmail.com
세션 생성시간 : Thu Mar 10 11:11:02 KST 2011
설정된 세션유지시간: 30
마지막 AccessTime :Thu Mar 10 12:43:17 KST 2011
----------------------------------------------
▶ 이번에는 세션이 끊기도록 코딩해서 Refresh나 서버와 통신을 하지 않고 얼마나 유지되는지 보자.
위에서 60초로 테스트 했다면 이번에는 35분으로 변경해 보자.
// RiaApp.java public void roop(){ ... ... t.scheduleRepeating(60000*35); //35분 } // RiaAppPgmServiceImpl.java @Override public void getSessionData() throws Throwable { HttpSession session = getSession(); if( null == session.getAttribute("loginid")) // index.html페이지에서 전달해주고 loginChk.jsp에서 생성한 세션정보 throw new Throwable("세션이 종료되었습니다."); else{ System.out.println("로그인 아이디는 : "+(String)session.getAttribute("loginid")); System.out.println("세션 생성시간 : "+ new java.util.Date(session.getCreationTime()) ); System.out.println("설정된 세션유지시간: "+ session.getMaxInactiveInterval()/60); System.out.println("마지막 AccessTime :"+ new java.util.Date(session.getLastAccessedTime())); System.out.println("----------------------------------------------"); } }
이제 실행해보자. 35분 후 세션이 종료되었는지 유지되고 있는지 테스트 해보면 알수 있겠다.
'GXT RIA App 만들기' 카테고리의 다른 글
Ext Gwt(Gxt) RIA어플리케이션 개발(11번째) (5) | 2011.03.07 |
---|---|
Ext Gwt(Gxt) RIA어플리케이션 개발(10번째) (10) | 2011.03.01 |
Ext Gwt(Gxt) RIA어플리케이션 개발(9번째) (5) | 2011.01.31 |
Ext Gwt(Gxt) RIA어플리케이션 개발(8번째) (0) | 2011.01.28 |
Ext Gwt(Gxt) RIA어플리케이션 개발(7번째) (5) | 2011.01.20 |
Ext Gwt(Gxt) RIA어플리케이션 개발(6번째) (1) | 2011.01.18 |
댓글을 달아 주세요
좋은 강좌 잘 보고 있습니다.
2011.04.20 11:31 [ ADDR : EDIT/ DEL : REPLY ]이번 프로젝트에 GXT 적용해서 하는데 많은 레퍼런스가 없어서 고생(?) 좀 하고 있습니다.
여기 강좌 보면서 많은 부분 해결했습니다. 좋은 강좌 계속 부탁합니다. ^^
네 잘보셨다니 다행입니다. 제가 요즘 프로젝트때문에 강좌연재를 못하고 있는 상황입니다.
2011.05.20 16:54 신고 [ ADDR : EDIT/ DEL : REPLY ]이번에는 ExtJS를 이용할 계획이라 extjs관련 글만 겸사겸사 정리해서 올리고 있는 실정입니다.
빠른 시일내로 연재를 시작하도록 하겠습니다.
글 잘 봤습니다. 고생 많이 하셨네요.
2011.11.27 01:27 [ ADDR : EDIT/ DEL : REPLY ]Ext GWT는 생각보다 코딩 양이 많은것 같습니다. UI 그리는 도구(Designer)가 있으면 참 좋겠다고 생각해 봅니다.
Gui 용 플러그인이 존재합니다.
2011.12.07 16:35 신고 [ ADDR : EDIT/ DEL ]제가 한참 gwt개발할 시기에는 그리
완성도가 높이 않았지만 현재는
좀 개선되었을 것으로 예상됩니다.
그러나 어차피 소스자체를 수정해야만 하기
때문에 툴에 의존하기 보다는 소스를 통해 UI를
그리는 것이 좋지 않을까 싶습니다.
매번 잘보고 갑니다.
2014.02.05 14:14 [ ADDR : EDIT/ DEL : REPLY ]gwt ext 자료를 한국에서 구하기 힘들었는데
매번 잘보고 있습니다.^^
감사합니다.