(tomcat) 톰캣, jvm 실행 인자
tomcat이 하는 일? = Servlet Container
- 자바에는 요청을 받아서 처리하는 일을 담당하는, servlet이라는 actor가 있음.
- 요청을 받으면 서블릿은 자기가 알아서 실행되는게 아니라 서블릿을 실행하는 주체가 따로 있다.
- 이게 바로 서블릿 컨테이너. 즉, 요청을 받으면 서블릿을 해당 요청을 파라미터로 실행해주는게 서블릿 컨테이너이고,
- tomcat이 바로 서블릿 컨테이너다.
tomcat log
- tomcat 로그에 찍히는 log는 여러 스레드가 동시에 기록하기 때문에, 한 세션의 요청이 연속해서 바로 뒤이은 로그에 찍혀있지 않을 수 있다.
- 그래서 로그를 추적하기 위해 exec-* 번호를 같이 기록해 주는데, 이는 스레드 번호를 의미한다.
- 로그는 이 exec-* 번호를 따라가면서 보면 된다.
tomcat의 async 비동기 지원
- 서블릿 3.1 톰캣 8.5부터 nio를 지원함.
- 그러나 그냥 Spring-WebFlux & Netty를 쓰는게 좋은 선택일 수 있음. (다른 API가 동기식이기 때문 )
tomcat 설정
server.xml
- Realm은 웹 애플리케이션에서 정당한 사용자인지 식별하고, 아울러 각 사용자에 맞는 roles을 지정하는 사용자와 비밀번호의 “database” 다. 라고 얘기하고 있는데, 여기서 말하는 사용자란 tomcat manager 로그인 할 때 쓰는 사용자를 말한다
- UserDatabaseRealmn이면
$CATALINA_BASE/conf/tomcat-users.xml
에 명시된 사용자를 불러온다거나, 뭐 그런 기능이다.
tomcat manager, examples 등 기본 페이지 비활성화
- 물론 이런 url은 따로 설정하지 않으면 단순 페이지 접속만 가능할 뿐 공격 벡터가 되지는 않는데.. 어쨌든 불필요한 페이지가 유저한테 노출될 수 있으니 삭제
tomcat/webapps
하위 폴더를 날려주면 된다.
This post is licensed under CC BY 4.0 by the author.