Tomcat

Apache Software Foundation에서 개발한 오픈 소스 웹 서버 및 서블릿 컨테이너.
Java Servlet, JavaServer Pages (JSP), Java EL 등을 지원하며, 웹 애플리케이션을 위한 컨테이너 역할 수행한다.

 

장점:

  1. 오랜 기간 동안 사용되어 왔고, 안정성이 검증되어 있다.
  2. 방대한 커뮤니티 지원과 풍부한 문서화.
  3. Spring과 같은 인기 있는 Java 프레임워크와 잘 호환된다.
  4. Java 웹 애플리케이션 표준인 Servlet과 JSP를 잘 준수한다.

단점:

  1. 경량화에 비중을 둔 웹 서버에 비해 상대적으로 무거울 수 있다.
  2. 비동기 처리와 같은 몇몇 고급 기능 지원이 제한적일 수 있다.

 

Jetty

Eclipse Foundation에서 개발한 오픈 소스 웹 서버 및 서블릿 컨테이너.
작은 크기, 빠른 시작 시간, 모듈식 플러그인 아키텍처 등이 특징.

 

장점:

  1. 경량화되어 있어 메모리 사용량이 적고 시작 시간이 빠르다.
  2. 모듈식 아키텍처로 필요한 기능만 선택적으로 사용할 수 있다.
  3. 임베디드 웹 서버로서 사용하기 적합하다.

단점:

  1. Tomcat과 비교할 때 상대적으로 작은 커뮤니티 지원.
  2. 문서화가 Tomcat만큼 풍부하지 않을 수 있다.

 

Undertow

JBoss에서 개발한 경량화된 오픈 소스 웹 서버.
Servlet 3.1, WebSocket, HTTP/2 등 최신 Java 웹 표준을 지원하며, 높은 성능과 비동기 처리를 지원.

 

장점:

  1. 빠른 시작 시간과 높은 성능.
  2. 비동기 처리를 지원하여 고성능이 요구되는 애플리케이션에 적합하다.
  3. 최신 Java 웹 표준을 지원한다.

단점:

  1. 상대적으로 새로운 웹 서버로 커뮤니티 지원이 더 적을 수 있다.
  2. Tomcat과 Jetty에 비해 일부 애플리케이션에서의 호환성 문제가 있을 수 있다.

톰켓이 설치된 경로에서 CMD를 키고

.\service.bat install 입력

그러면 작업관리자 서비스에 TomCat이 등록이 됨  

사진에서는 안보이지만 해당 TomCat의 시작유형 을 자동으로 변경 끝 

클라이언트와 서버는 역활에 따라 구분되어진다.

  • 클라이언트: 서비스를 요청하는 애플리케이션 혹은 컴퓨터  (요청) +저장된 정보를 DB에 보관, 처리, 관리
  • 서버: 서비스를 제공하는 애플리케이션 혹은 컴퓨터 (응답)

서버는 또 다시 어떤 서비스를 제공하느냐에 따라 여러 종류로 나뉘게 된다.

  • Email server: 이메일 서비스를 제공
  • File server: 파일 제공
  • Web server: 브라우저를 통해서 받을 수 있는 모든 서비스를 제공!

실제 운영시에는 컴퓨터 한대에 소프트웨어 한 개를 주로 사용하지만 

컴퓨터 한 대에 여러 서버 소프트웨어를 설치할 수 있다 

ex 웹 서버와 메일 서버를 같은 컴퓨터에 설치 -> 웹 겸 메일 서버가 됨

 

만약 다음과 같은 서버 컴퓨터에 요청이 들어올 경우 어떤 요청인지 구분을 어떻게 할 수 있을까?

정답: 포트 번호를 통해 요청을 구분한다.

각각의 포트 번호는 각 서버랑 binding 되어 있으며 서버가 해당 포트를 통해 Listening 하고 있다.

+ 포트 번호 0~1023 까지는 예약이 되어 있으며 그것을 제외한 나머지 포트를 사용해야 하는데 약 6만 개의 포트를 사용 가능하다.

 

웹 애플리케이션 서버(WAS): 

  • Application(프로그램)
  • 하는 일: 서버에 프로그램을 설치해두면 클라이언트가 해당 프로그램을 사용하게 해준다
  • 사용하는 이유: 설치된 서버 1곳 만을 업데이트 하면 되기에 업데이트 용이성이 확보되며 클라이언트의 저장 공간을 절약해줄 수 있기 때문에

Tom Cat(WAS)의 작동 방식:

  1. 클라이언트가 브라우저에서 도메인 주소와 Tom Cat의 포트번호 8080 입력 (ex: http://www.suhanlim.com/event/list:8080)
  2.  tomcat 내부에 있던 Thread Pool중에 한가한 Thread가 사용자 요청 처리
    1. Connector 파트에서 입력한 도메인 주소의 프로토콜 방식 매칭 ex: http: 는 HTTP1.1 프로토콜 
    2. Engine 파트에서 입력한 도메인의 Host 매칭 일반적으로는 한 개씩만 존재하나 tomcat은 여러개의 도메인이 존재가능 ex: www.suhanlim.com
    3. Engine 파트안의 Context 매칭 Context는 하나의 Web App 즉 Spring 기준 하나의 STS 프로젝트 ex: event
    4. Context 파트안의 Servlet 매칭 작은 서버 프로그램 (서버에서 실행되는 작은 프로그램)==컨트롤러 클래스 내부 main 함수 ex: list 

 

 

 

 

+ Recent posts