웹 애플리케이션,속성,리스너
웹 애플리케이션 전체에서 정보를 공유하고 싶은 경우
서블릿 초기화 파라미터가 아닌, 컨텍스트 초기화 파라미터에 key:value 형태로 저장할것
context-init-param 과 servlet-init-param 차이
- context
- DD내에 web-app내 <'context-param> 태그 내에 작성함
- 호출시 getServletContext().getInitParameter("foo")
- 웹 앱 내에 어떤 서블릿 or jsp에서 호출 가능
- servlet
- '<'servlet> 내에 작성
- getServletConfig로 호출
- <'init-param>을 포함하고 있는 서블릿에서만 호출 가능
ServletConfig는 서블릿 당 하나, ServletContext는 웹앱당 하나
컨텍스트 속성, 세션 속성 동기화 문제
- context에 접근하는 객체에서 동기화 함 , 동일 컨텍스트를 다루는 모든 영역에서 동기화 처리를 해줘야함
- 세션은 HttpSession 객ㅊ체를 동기화하는 방식,
Session은 클라이언트 당 하나만 존재하지만 클라이언트가 하나 이상의 브라우저에서 접근 할 경우 동기화 필요함.
Single Thread Model
서비스를 위해 정의하는 서블릿은 HttpServlet을 상속받거나 Single ThreadModel interface를 구현하는 것 중 하나
컨테이너는
- 컨테이너가 생성한 서블릿 단 하나에 대해 요청을 하나씩 처리
- 서블릿 인스턴스 풀을 생성해 요청이 동시에 여럿 들어오면 각각의 서블릿 인스턴스가 요청을 하나씩 처리
하는 방식 중 하나