서블릿 컨텍스트(ServletContext)란?

서블릿 컨텍스트(ServletContext)란 무엇일까?


서블릿 컨테이너(톰캣)가 구동되고 그 위에 여러 웹 어플리케이션(컨텍스트)이 뜨게되는데 웹 어플리케이션의 공통자원이나 정보를 바인딩해서 웹 어플리케이션을 구성하고있는 여러 서블릿들이 공유할 수 있게하는 것이 서블릿 컨텍스트이다.

서블릿 컨테이너 실행 시 한 개의 웹 어플리케이션에 하나의 서블릿 컨텍스트 객체가 생성되고, 서블릿 컨테이너 종료 시 소멸된다.

아래 사진은 ServletContext 인터페이스이다.

보이는 바와 같이 ServletContext는 인터페이스이며 주석의 내용을 대충 해석해보면 다음과 같다.

  1. 서블릿이 서블릿 컨테이너와 통신하는 데 사용하는 메소드들을 정의한다.

  2. 파일의 MIME 타입을 얻어오거나 request를 디스패치하고 로그를 기록할 수 있다.

  3. 하나의 JVM에 한 개의 웹 어플리케이션, 하나의 웹 어플리케이션에 한 개의 컨텍스트가 존재한다.(웹 어플리케이션은 서블릿들의 모음이다. )

  4. 배포지시자(web.xml)에 'distributed'로 된 경우, 각 가상머신 당 하나의 컨텍스트 객체가 생긴다. 이 경우, 컨텍스트는 글로벌 정보를 공유하는 위치로 사용될 수 없다. 대신 데이터베이스와 같은 외부의 리소스를 사용해라.

5) ServletContext 오브젝트는 ServletConfig 오브젝트 내에 포함되며, 서블릿이 초기화 될 때 웹 서버가 서블릿을 제공한다.

  1. 의 경우 세션 클러스터링 관련 내용인 것 같은데 다음 기회에 이어서 포스팅하겠다. 중요한 건 웹 어플리케이션을 이루는 여러 서블릿끼리 ServletContext의 정보를 공유할 수 있지만 서로 다른 웹 어플리케이션 끼리는 공유할 수 없다는 점이다.