#connector
글
-
Tomcat 소스 파헤치기 2: 전체 지도 — Server, Service, Connector, 그리고 컨테이너 넷
Tomcat 소스를 처음 여는 사람을 위한 지도입니다. server.xml의 Server·Service·Connector·Engine·Host가 각각 어떤 클래스가 되는지, Engine·Host·Context·Wrapper 네 컨테이너가 부모·자식으로 어떻게 이어지는지, 커넥터(Coyote)와 서블릿 컨테이너(Catalina)를 왜 나눴고 Adapter 하나로 어떻게 잇는지, Jasper·EL·JULI·Naming은 어디에 있는지를 실제 소스와 직접 돌린 예제로 확인합니다.
-
Tomcat 소스 파헤치기 5: 커넥터와 NIO 엔드포인트 — 연결은 어떤 스레드가 받나
server.xml 의 <Connector port="8080"> 한 줄이 Connector, Http11NioProtocol, NioEndpoint 라는 세 객체가 되고, 그 안에서 Acceptor·Poller·작업 스레드가 연결 하나를 나눠 맡는 과정을 소스로 따라갑니다. keep-alive 연결이 요청 사이에 스레드를 놓아주는 길, JDK 와 다르게 동작하는 Tomcat 의 스레드 풀(TaskQueue), maxConnections·acceptCount·maxThreads 가 걸리는 자리를 jstack 과 소켓 예제로 확인하고, main 브랜치에서 NIO2 커넥터가 빠진 것도 11.0.x 와 비교합니다.
-
Tomcat 소스 파헤치기 6: HTTP/1.1 요청 읽기 — 바이트가 coyote Request가 되기까지
소켓에서 읽은 바이트가 Http11Processor의 service() 루프 안에서 요청 줄과 헤더로 나뉘어 coyote Request가 되는 과정을 소스로 따라갑니다. 문자열을 늦게 만드는 MessageBytes, maxHttpHeaderSize와 maxHeaderCount 한도, 잘못된 요청이 HTML 400 페이지가 되는 길, keep-alive와 chunked 응답이 정해지는 자리를 날 요청을 보내 직접 확인합니다.
-
Tomcat 소스 파헤치기 15: HTTP/2와 WebSocket — 업그레이드로 갈아타는 프로토콜
HTTP/1.1로 시작한 연결이 어떻게 HTTP/2나 WebSocket으로 바뀌는지 Tomcat 소스로 따라갑니다. UpgradeProtocol과 UpgradeToken, Http11Processor의 업그레이드 처리, 연결 하나에 스트림 여럿을 싣는 Http2UpgradeHandler, 필터 하나로 들어오는 WebSocket의 WsFilter와 WsHttpUpgradeHandler를 h2c 요청과 JDK WebSocket 클라이언트로 직접 확인합니다.