1.
Http11Processor μμ μμ!
a.
getHandler().service(request, response)
b.
handler λ μ½μν
νΈλ€λ¬
c.
request μ response λ μμ±μ(AbstractProcessor)μμ μμ±ν¨!
2.
catalina μμ Valve λ€μ΄ μ°¨λ‘λ‘ μ€νλ¨!
3.
StandardWrapperValve μμ ApplicationFilterChain μ doFilter λ₯Ό μ€ν
a.
ApplicationFilterChain μλ filters λ€μ΄ μμ!
4.
ApplicationFilterCahin μ doFilter μμ internalDoFilter λ₯Ό νΈμΆ
5.
μ¬κΈ°μ filter λ€λ§λ€ doFilter μ€ν!
a.
μ¬κΈ°κ° ν
μ½ν‘μμ λμλ pos λΆλΆ
1.
Thread run() μμ target.run()
2.
TaskThread (Thread λ₯Ό μμ) μ WrappedRunnable μ run() μ€ν
3.
ThreadPoolExecutor λ΄λΆμ run μ€ν
4.
SocketProcessorBase μ doRun()
5.
NioEndPoint μ SocketProcessor μ process() μ€ν
6.
AbstractProtocol$ConnectionHandler μ process() μ€ν
7.
AbstractProtocolLight service() μ€ν
8.
Http11Processor(AbstractProcessor) μ service() μ€ν
9.
CoyoteAdapter μ invoke() μ€ν
10.
Valve λ€ chaining
a.
StandardEngineValve
b.
Host
c.
Context
d.
Wrapper
11.
StandardWrapperValve μμ filterChain.doFilter μ€ν
a.
filterChain μλ filters μ dispatcher servlet μμ
12.
filter chaining
a.
ApplicationFilterChain doFilter() β AFC doFilterInternal() β OncePerRequestFilter doFilter() β λ±λ‘λ Filter doFilterInternal() μν
13.
pos κ° n λ³΄λ€ ν¬λ©΄ servlet.service() μ€ν
14.
HttpServlet service()
15.
FrameworkServlet μμ doGet() κ³Ό processRequest() μ€ν
16.
DispatcherServlet λμ°©
2, 3μ tomcat.util.threads
4, 5 λ tomcat.util.net
6, 7 μ tomcat.coyote
8 μ tomcat.coyote.http11
9 λ tomcat.catalina.connector
10 μ tomcat.catalina.core
ApplicationFilterChain μ tomcat.catalina.core
OncePerRequestFilter λ springframework.web.filter
HttpServlet μ javax.servlet.http
FrameworkServlet μ springframework.web.servlet