기술지원 문의

session 중복
김봉현 / 2008-07-30 08:53

windows server 2003 Enterprise Edition service pack 2

resin3.0.23

oracle9i

이렇게 사용중입니다.

resin은 윈도우 서비스에 등록해서 사용중입니다.

 

이번에 세션이 중복되어 데이타 입력이 잘못되어서 문의 드립니다.

 

A라는 사람이 다른 ip로 로그인해서 데이타를 insert했는데

B라는 사람이 insert한것처럼 되었습니다.

 

이렇게 세션이 중복되는 일이 있는건지요?

 

두 사람은 서로 다른 위치에서 다른 IP를 사용 중이었습니다.,

완전히 다른 지역에서 사이트에 접속해서 작업했는데도 이런 일이 발생했습니다.

database와 트렌잭션이 일어난거는 확인 가능한데

왜 데이타가 다른 사람의 이름으로 들어갔는지 모르겠습니다.

 

seesion에 있는 값으로 작업자를 남기고 있습니다.

 

seesion log나 다른 log를 남길 수 있는 방법을 알려주셨으면 하고

이런일을 방지하기 위해서는 어찌 해야하는지 알려주셨으면 합니다.

 

답볍 기다리겠습니다.

감사합니다. 

[답변]session 중복
관리자 / 2008-07-31 13:11

안녕하세요.. 기술지원팀입니다.

 

Was에서 생성되고 관리되는 세션은 하나의 컨텍스트 즉 하나의 Web-App 당 모두 독립적으로 생성되고 관리됩니다.
하나의 Host에 다수의 Web-App가 구성된다면 각각의 Web-App 마다 서로 다른 고유의 세션이 생성됩니다.
이것은 엄밀히 Servlet Spec Version 2.3 에 정의된 내용이기도 합니다.
하나의 독립적인 컨텍스트인 Web-App는 자기 자신만의 독립적인 세션을 생성합니다.

세션이 중복되는 일은 없습니다.

 

동일 Host에 test1 과 test2 의 서픽스를 가지는 2개의 Web-App 를 구성의 예
------------------------------------------------------------------------
환경 설정 부분
..
..
    <host id=\"\" root-directory=\"/\">
        <web-app id=\"/test1\" document-directory=\"/content/web/test1\"/>
        <web-app id=\"/test2\" document-directory=\"/content/web/test2\"/>
    </host>
..
..
------------------------------------------------------------------------

각각의 Web Root 에 세션 정보를 읽어오는 테스트 페이지를 추가
처음 test1 페이지를 접근하고 같은 창에서 test2 페이지를 접근했을 때의 상황
------------------------------------------------------------------------
test1 페이지 화면

Test1 Session 정보
세션에 저장된 값:true
isNew():true
세션ID:abcVKXq16y4o19VnEPpLr
세션생성시간:Tue Apr 15 10:14:41 KST 2008
세션마지막접속시간:Tue Apr 15 10:14:41 KST 2008
------------------------------------------------------------------------
------------------------------------------------------------------------
test2 페이지 화면

Test2 Session 정보
세션에 저장된 값:null
isNew():true
세션ID:abcVKXq16y4o19VnEPpLr
세션생성시간:Tue Apr 15 10:15:10 KST 2008
세션마지막접속시간:Tue Apr 15 10:15:10 KST 2008
------------------------------------------------------------------------

세션의 ID 값이 동일합니다. 하지만 세션이 생성된 시간이 서로 다릅니다.
역시 세션에 저장된 정보 또한 두 Web-App 간 공유되지 않습니다.
세션 ID 값은 동일하지만 이 두 세션은 전혀 다른 세션이다라는 것을 알 수 있습니다.

또한 세션을 invalidate 한다고 해서 세션 ID가 사라지는 것은 아닙니다.

 

서로 다른 위치에서 접속하였다면 다른 세션이 만들어 지는 것이 정상입니다.

 

레진 버그를 의심해 볼 수 있습니다.

레진을 최신 버전으로 업데이트를 해보시기 바랍니다.

 

seesion 만을 위한 특별한 로그는 없습니다.

로그 level 을 높여보시기 바랍니다.