- 나만의 WAS 만들기 프로젝트
- 다음 내용들을 목표로 합니다
- 웹 서버 핵심 원리 이해
- 서블릿 컨테이너 동작 방식 습득
- 멀티스레딩, 동시성 제어 지식 습득
- 등등..
- 소켓 연결 처리: 클라이언트로부터의 TCP 연결을 수신하고 HTTP 요청을 읽어들이는 기능.
- HTTP 요청 파싱: HTTP 요청 헤더와 본문을 파싱하여 객체로 변환.
- 단 요청 본문은 json 형식만 가정
- HTTP 응답 생성: 요청에 대한 HTTP 응답 객체를 생성하고 클라이언트로 전송.
- 서블릿 생명주기 관리:
init()
,service()
,destroy()
메서드를 관리.
- 서블릿 매핑:
- URL 패턴을 서블릿 클래스와 매핑하여 요청을 라우팅.
- 서블릿 인스턴스 관리:
- 서블릿 인스턴스의 싱글톤 또는 다중 인스턴스 관리.
- 스레드 풀 구현:
- 다수의 요청을 병렬 처리할 수 있도록 스레드 풀 생성 및 관리.
- 동시성 제어:
- 동시성 이슈를 방지하기 위한 동기화 및 락 메커니즘.
- URL 패턴 매칭:
- 정규식을 사용하여 URL과 서블릿/핸들러의 매핑 구현.
- 라우팅 테이블 관리:
- URL과 서블릿 매핑 정보를 저장하고 탐색하는 데이터 구조.
- 세션 생성 및 추적:
- 세션 객체 생성 및 클라이언트 식별을 위한 세션 ID 관리.
- 세션 데이터 저장:
- 각 세션에 대한 사용자 데이터 저장 및 만료 정책 설정.
- 파일 탐색 및 서빙:
- 지정된 디렉토리에서 정적 파일을 찾아 클라이언트에 전송.
- MIME 타입 처리:
- 파일 확장자에 따라 적절한
Content-Type
헤더 설정.
- 파일 확장자에 따라 적절한
- 에러 핸들러:
- 요청 처리 중 발생하는 에러를 잡아 사용자 정의 에러 페이지로 응답.
- HTTP 상태 코드 관리:
- 404, 500 등의 HTTP 상태 코드별 처리 로직.