CGI 프로그램과 서블릿

hyunwoo·2023년 1월 13일
0

Spring (fastcampus)

목록 보기
10/27

Servlet (Server + Applet의 합성어)

  • 자바에서 웹 애플리케이션을 만드는 기술
  • 자바에서 동적인 웹 페이지를 구현하기 위한 표준

ServletContainer

  • 서블릿의 생성부터 소멸까지의 라이프사이클을 관리하는 역할
  • 서블릿 컨테이너는 웹 서버와 소켓을 만들고 통신하는 과정을 대신 처리해준다.
    개발자는 비즈니스 로직에만 집중하면 된다.
  • 서블릿 객체를 싱글톤으로 관리 (인스턴스 하나만 생성하여 공유하는 방식)
    - 상태를 유지(stateful)하게 설계하면 안됨
    - Thread safety 하지 않음

예시) 상태를 유지(stateful)하게 설계하면 안됨 / Thread safety 하지 않음

위 코드에서는 각각의 1 과 0이 출력된다고 예상했지만
멀티 Thread 환경에서 하나의 객체를 공유하게 되면 위와 같이 원치않는 결과가 나올 수 있다.

synchronized (this)

위 예시를 해결하기 위해서는

 synchronized (this) {			// 동기화
 
 }

를 추가하면 된다.
해당 코드를 추가하고 다시 실행 시키면 초반에 의도했던데로 프로그램이 실행된다.

그렇지만 싱글톤에서는 상태를 유지하게 설계를 하면 안되므로 지양하자.

WAS vs 서블릿 컨테이너

• WAS는 서블릿 컨테이너를 포함하는 개념
• WAS는 매 요청마다 스레드 풀에서 기존 스레드를 사용함
• WAS의 주요 튜닝 포인트는 max thread 수
• 대표적인 WAS로는 톰캣이 있다

0개의 댓글