서블릿 실행 절차 및 수명 주기

  • by

서블릿 실행 절차

Java EE는 프로그램 실행 흐름 컨테이너가 제어합니다.

이렇게 개발자가 아니다.

제3자프로그램 실행 흐름 통제하는 것 IoC(Inversion of Control)라고 합니다.

서블릿Java EE 기술이므로 컨테이너에 의해 제어됩니다.

따라서 Java EE 기반 프로그램을 개발할 때 응용 프로그램 컨테이너가 어떤 순서로 프로그램을 실행하는지 알고,

이 순서에 따라 개발해야합니다.


① 클라이언트로부터 처리 요구: 웹 서버가 URI 분석하고 서블릿 요청이면 서블릿 컨테이너에 처리를 전달합니다.


서블릿 컨테이너는 요청한 서블릿을 WEB-INF/classesWEB-INF/lib에서 찾아 실행할 준비를 합니다.

②처음 요청 여부 판단: 서블릿 객체가 메모리에 없으면 첫 번째 요청이며 첫 번째 요청이 아닙니다.

③서블릿 오브젝트의 작성: 첫 번째 요청이 있을 때 한 번만 객체 만들기한다.


(new 명령으로 여러 객체를 만들 수 있는 일반 Java 객체와 다릅니다.

)

④ init() 메소드 실행: Servlet 인터페이스로 선언되고 있어 GenericServlet 클래스에 기능이 구현되고 있다.


(따라서 덮어쓰고 싶은 경우는 여기) 서블릿 오브젝트의 초기화 조작.

⑤ service() 메소드 실행: service() 메소드는 클라이언트의 요구가 있을 때마다 실행.


콜백 메소드와 서블릿 객체의 라이프 사이클

콜백 메소드: 어떤 객체에서 어떤 상황이 발생했을 때 컨테이너가 자동으로 호출에서 실행되는 메소드

콜백 메소드는 서블릿을 실행합니다.

init(), service(), destroy()는 콜백 메소드입니다.

메소드 이름 메소드가 실행되는 시점 실행 횟수 기능 구현
init() 클라이언트에서 처음으로 서블릿 요청이 있을 때 1 초기화 작업
service() 클라이언트로부터 요청이 있을 때마다 n 실제 서블릿이 처리해야 하는 작업
destroy() 서블릿 객체가 메모리에서 삭제될 때 1 자원 해제 조작

☆ 요청이 있을 때마다 서블릿 객체를 만드는 대신, 처음 요청할 때 만든 서블릿 개체를 계속 사용!

다른 이전 Common Gateway Interface(CGI) 프로그램은 요청이 있을 때마다 독립적으로 처리되었지만,
서블릿은 한번 생성한 객체를 재사용하므로 처리 속도, 메모리 부분에서 이전 기술보다 효율적입니다.

서블릿 객체 삭제

서블릿 오브젝트는 서버를 중지하고 웹 애플리케이션 서비스를 중지할 때입니다.

이 때 destroy() 메서드가 호출되어 실행됩니다.

출처 : 처음 시도한 서블릿 & JSP 웹 프로그래밍 (오해)