티스토리 뷰


서블릿 컨테이너(톰캣)는 서블릿의 생명주기를 관리한다. 서블릿을 생성,실행,소멸하는 역할을 한다.

서블릿 컨테이너는 DD(Deployment Descriptor)파일이라고 불리는 web.xml을 참고하여 어떤 URL이 클라이언트로부터 들어왔을때 그 URL을 처리 할 수 있는 서블릿을 찾게 된다. 근데 만약에 그 서블릿이 메모리에 로드 되어 있지 않다면, 로드 시킨다. 근데 이미 로드 되어 있는 서블릿이 있다면 그 서블릿을 재활용 한다.


그렇기 때문에, 서블릿이 처음 생성 될때는 init() service()가 차례로 호출 되는데 똑같은 URL로 요청을 하게 되면 service()만 호출 하는 것이다. service()콜백 메소드는 서블릿이 실행될때 호출 된다. 또한 WAS가 종료 될때 서블릿에 대해 destroy()메소드를 호출한다.


서블릿은 서블릿 컨테이너에 의해서 딱 하나만 생성된 후에 재활용 되기 때문에 서블릿의 인스턴스 변수에 어떤 정보를 저장해서는 안된다. 이 서블릿은 멀티 쓰레딩 환경에서 돌아가기 때문에 인스턴스 변수에 어떤 정보를 저장하게 되면, 여러 쓰레드에 의해 race condition이 발생할 수 있기 때문이다. 즉, 읽기 전용으로 final 선언하여 쓰레드에 인스턴스 변수를 두는것은 괜찮지만 그외에 것은 지역변수로 선언해야 한다. 지역변수를 사용하게 되면 쓰레드 별로 그 지역변수를 스택에 보관하기 때문에 race condition이 발생하지 않는다.



cf) DD파일이란 한마디로,(서블릿)배치 파일이다. 서블릿 컨테이너가 클라이언트로부터 어떤 요청을 받으면 그 요청 URL을 처리 할 수 있는 서블릿을 찾아야 하는데, 그때 참고하는 파일이 web.xml이라는 DD파일이다. 배치 파일에는 필터나, 서블릿 url매핑정보등이 들어가 있다.

예를들어, www.naver.com/hello 라는 요청이 들어왔을때 네이버의 서버의 서블릿 컨테이너는 hello라는 요청을 처리 할 수 있는 서블릿을 찾는다. 그 서블릿을 찾을때 참고하는 파일이 web.xml이라는것이다.



출처 : 열혈강의 자바 웹 개발 워크북


'컴퓨터 공학과 졸업 > JSP&Servlet' 카테고리의 다른 글

서블릿의 정의  (0) 2018.08.01
모델1 모델2 MVC패턴  (0) 2018.07.27
필터와 래퍼  (0) 2018.07.27
JSP의 새로운 문법  (0) 2018.07.26
Servlet Container  (0) 2018.07.26
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함