본문 바로가기

Programming/Web

콜백 메소드와 서블릿 객체의 생명주기

반응형

콜백 메소드?

callback method 란 어떤 객체에서 어떤 상황이 발생하면 컨테이너가 자동으로 호출하여 실행되는 메소드를 의미한다. 이러한 콜백 메소드들이 서블릿을 실행하게 된다. HttpServlet 클래스를 상속받은 다음 오버라이딩한 init(), service() 가 콜백 메소드에 해당한다. 이 메소드들은 서블릿 객체에 어떤 이벤트가 발생하면 호출된다.

 

GenericServlet 클래스에 선언되어 있는 destroy() 메소드도 콜백 메소드이다. destroy()는 메모리에서 서블릿 객체가 삭제될 때 호출되는 메소드이다. 객체가 삭제될 때 호출되는 메소드이므로 자원을 해체하는 작업을 수행한다.

 

 

 

서블릿 객체의 생성

서블릿 객체가 메모리에 생성되는 시점은 서버 입장에서 클라이언트로부터 최초로 서블릿 실행 요청을 받았을 때 이다. 클라이언트 입장이 아니고 서버 입장이다. 

 

서버 입장에서 최초로 서블릿 요청이 있을 때, 서블릿 컨테이너는 해당 서블릿 객체를 메모리에 생성한 다음, init() -> service() 순으로 실행한다.

 

이후에 같은 서블릿 실행 요청이 있으면 최초 요청 시 생성한 서블릿 객체의 service() 메소드를 실행한다.

 

사실 클라이언트로부터 서블릿 요청이 있을 때마다 요청이 최초인지를 판단하는 기준은 객체 생성 여부이다.

 

서블릿은 한 번 생성한 객체를 재사용해 처리속도, 메모리 부분에서 효율적인 장점이 있다.

 

 

 

서블릿 객체의 삭제

최초 요청 시 생성된 서블릿 객체가 삭제되는 시점은 서버를 중지시켜 웹 애플리케이션 서비스를 중지할 때이다.

 

웹서버에서는 전체 서비스를 중지할 수도 있고 일부 서비스만 중지할 수도 있다.

 

이때 destroy() 메소드가 호출되어 실행된다.

 

destroy() 메소드에는 자원 해제하는 내용을 구현하면 된다.

 

 

 

Servlet 객체의 상속구조와 서블릿 프로그램 실행순서

서블릿 클래스 간의 관계 서블릿을 구현할 때는 javax.servlet.http 패키지에 있는 HttpServlet 클래스를 반드시 상속받아야 한다. HttpServlet은 웹상에서 클라이언트 요청이 있을 때 해당 서블릿을 실행하

mrlazydev.tistory.com

 

반응형