세션은 얼마나 지속될까?
기본 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어플리케이션 개발(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 |