톰캣에 대해 알아보자.
톰캣은 JSP/Servlet 엔진이다. WAS가 아니다.

Coyote → Catalina → Jasper
톰캣을 설치하고 난 뒤에는 서버를 실행시키기 위한 런타임 환경이 필요하다. 톰캣은 자바로 작성된 프로그램이고 결국은 JDK가 필요하기 때문에 Java Home을 설정해줘야 한다.
Info: Loaded APR based Apache Tomcat Native library 1.1.31. 로그를 발견할 수 있다.
톰캣의 서버의 아키텍쳐를 이루고 있는 컴포넌트들을 전반적으로 살펴보자. 아키텍쳐는 컴포넌트들이 어떻게 구성되어 있는지 위에서 내려다본 Top-down viewm, 청사진을 의미한다.
HTTP 요청을 수신하고 응답을 반환하는 데 사용되는 엔드포인트를 나타낸다. 톰캣은 커넥터가 없다면 사실상 서블릿 컨테이너의 역할밖에 수행하지 못한다. 결국 커넥터를 통해 웹 서버의 기능을 제공하는 것이다.
아래는 톰캣의 conf/server.xml에 정의되어 있는 Connector 태그의 세부사항이다.
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html
Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
<Connector URIEncoding="UTF-8" acceptCount="100" compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,application/javascript"
compression="on" compressionMinSize="2048" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192"
maxThreads="1024" minSpareThreads="25" noCompressionUserAgents="gozilla, traviata"
port="8080" protocol="HTTP/1.1" redirectPort="443" useBodyEncodingForURI="true">
Catalina 엔진이 HTTP 요청을 수행하기 위해선 요청을 받아야 하는 것이 먼저다. 기억하자. 커넥터가 먼저다.
커넥터는 ‘port’ 속성에 명시된 특정 TCP 포트에서 연결을 수신할 수 있도록 대기하고 있으며, 들어온 HTTP 요청을 처리하고 응답을 생성하는 책임을 담당하는 엔진으로 전달한다.
http://www.leeho.com/doSomething URL 요청이 들어오면 톰캣은 www.leeho.com만 추출해서 톰캣 설정에 있는 host와 비교해서 매칭시킵니다.여기서 생성되는 요청들에는 스레드가 하나씩 할당되고, 특정 속성에 의해 생성되는 스레드의 수는 임의 조절이 가능하다.
커넥터는 프로토콜에 따라 HTTP Connector, HTTP2 Upgrade Protocol, AJP Connector 가 존재한다.
여기서 짚고 넘어갈 몇 개의 속성을 확인해보자.
위에서도 언급했지만 커넥터는 굉장히 중요하다. 그 이유는 서블릿은 사실 HTTP 요청을 받을 수 있는 그 어떠한 코드도 존재하지 않기 때문이다.
톰캣에 정의된 바로는 호스트로 정의되나 일반적인 기능으로 표현한다면 가상 호스트(Virtual Host)와 같은 기능이다. 특정 host 명, 즉 http url로 서비스를 분기하는 역할을 수행한다.

톰캣 엔진 Catalina(Enging 태그의 name 애트리뷰트)에서 처리하는 기본 호스트는 localhost이고, localhost는 webapps 디렉토리를 기본 배치 디렉토리로 갖습니다.
StandardHost 구현이 상당한 추가 기능을 제공하기 때문에 대부분은 커스텀 호스트를 거의 생성하지 않습니다.