NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Web 톰켓 서버 - JSESSIONID 란?

    페이지 정보

    본문

    JSESSIONID는 톰켓 컨테이너에서 세션을 유지하기 위해 발급하는 키를 말합니다. IIS나 Tomcat, nodejs등등... 웹 서버들은 Stateless 프로토콜인 HTTP를 사용합니다. Stateless는 이전 상태를 알 수 없다는 의미로 무상태라고 부릅니다. 무상태는 클라이언트와 서버 관계에서 서버가 각각의 클라이언트의 상태를 보존하지 않음을 의미합니다. 이렇게 하는 이유는 서버의 확장정이 높기 때문에 트래픽 발생시에도 대처를 수월하게 할 수 있습니다. 하지만, 클라이언트의 요청에 상대적으로 Stateful보다 더 많은 데이타가 소모되는 단점이 있습니다.

    Vun0dJY.png

     

     

    초창기의 웹은 정보를 주고 받는 단순 텍스트만 존재했습니다. 그렇다보니 고객이라는 개념도 로그인이나 서비스 제공과 결제등등... 어떠한 생태계도 없었습니다. 그래서, 클라이언트가 정보를 요청(Request)하면 서버는 해당 페이지를 찾아서 응답(Response)해주는 기능만 있어도 충분했습니다. 하지만, 점점 더 웹 환경이 복잡해지고 서비스가 생겨나면서 서비스를 유지하기 위한 다양한 방법들이 필요해지게 됩니다. 여기까지가 Stateless이고, Stateful(상태 유지)은 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존한다는걸 의미합니다. 단순히 말해서 클라이언트의 이전 요청이 서버에 전달되었을 때 클라이언트의 다음 요청이 이전 요청과 관계가 이어지는 것을 의미합니다. 예를 들어서 내가 장바구니에 물건들을 담았습니다. 그리고, 결제하기 버튼을 클릭하면 장바구니에 담겨있는 물건들과 가격들이 유지되어야 결제할 수 있을겁니다. 단순 상품 정보만 알려주는 사이트라면 상태 유지가 필요하지는 않습니다. 하지만, 클라이언트가 이전에 했던 행위들이 다음 행위와 연결된다면 상태 유지가 필수입니다.

    ※ 사실 쇼핑몰과 같이 복잡한 구조의 웹사이트는 Session이나 Cookie를 사용해서 상품 정보를 유지하지는 않습니다. 데이타베이스를 이용합니다.

    bR2xkrw.png

     

     

    서버에서 요청한 사용자가 최초로 요청했다고 판단(Session 만료 또는 Cookie 만료)되면 웹서버는 Response에 JSESSIONID를 발급하고, 숨겨서 클라이언트로 보냅니다. 전달된 JSESSIONID 값은 쿠키 형태로 사용자의 매번 요청때마다 헤더에 심어서 서버에 전달됩니다. 즉, 재요청시 Response를 통해 받은 JSESSIONID를 Request 헤더의 쿠키에 값을 넣어서 요청합니다. 그러면, 서버는 요청의 헤더에서 쿠키 정보를 보고, 사용자를 식별할 수 있게됩니다. 일부 환경에서는 쿠키를 제한해서 사용할 수 없는 경우들도 존재합니다. 이런 경우에는 URL Rewriting으로 URL 뒤에 JSESSIONID를 붙여서 전달합니다.

    fjbbsNh.jpg

     

     

    일반적으로 빠른 속도로 서버에 요청해야 하는 경우 웹브라우저를 통하지 않고, 직접 웹소켓으로 요청과 응답을 처리할 수 있습니다. 이 때 로그인이 필요한 작업이라면 JSESSIONID를 웹소켓의 헤더에 심어서 보내야 합니다. 이렇게 하면 웹브라우저를 실행하지 않고도 자동화할 사이트에 로그인된 상태로 업무를 진행할 수 있게됩니다. 그러면, 숨겨져 있는 JSESSIONID를 어떻게 알아낼 수 있을까요? 이 방법을 알면 셀레니움이 아니더라도 웹 업무를 자동화할 수 있을겁니다. 물론, 어느정도 같이 사용한다면 좀 더 효율적인 매크로를 만들 수 있긴합니다.

    엔지엠 매크로에서 JSESSIONID 값 알아내기 ]

     

    참고로, 서버가 어떤 환경(WAS)이냐에 따라 쿠키 이름인 JSESSIONID는 달라질 수 있습니다. 또한, 프로그래밍 언어별로 값이 아닌 파라메터명이 다를 수 있습니다. 예를 들어서 PHP는 PHPSESSID이고, IIS에서 ASP.NET을 사용한다면 ASPSESSIONID와 같이 쿠키에서 파라메터를 조회해야 합니다. 네이버의 경우 JSESSIONID이고, 옥션이나 지마켓은 ASPSESSIONID를 사용합니다. 이외에도 사이트마다 다를 수 있기 때문에 어느정도 분석은 필요합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.