본문 바로가기

BackEnd/Spring

Tomcat

Tomcat을 그냥 일반적인 웹서버라고 생각했는데, 정의를 보면 다음과 같다.

 

...더보기

아파치 톰캣은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버이다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다. - 위키백과 -

 

서블릿 컨테이너라는 용어가 낯선데 다음 이미지를 보면 이해할 수 있다.

< 톰켓으로 작동되는 웹 주기 > 

출처 : https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/

 

해당 이미지처럼 톰켓은 클라이언트와 요청과 응답에 대해 컨테이너를 생성한 후에 정해진 폴더 디렉토리와 web.xml에 맞게 동작한다.

 

Tomcat은 두가지 방법으로 사용되는거 같은데 WTP와 embeded 방식이다.

WTP은 Tomcat과 프로젝트를 분리하여 사용하고, embeded는 프로젝트 내에 직접 Tomcat 객체를 생성하여 실행한다.

일단 톰켓의 구조를 알아보기 위해서 톰켓을 실행해보도록 했다.

 

해당 버전의 코어를 다운받아 압축을 풀면 다음과 같은 디렉토리를 가진다.

< 톰켓의 구조 >

여기서 bin 파일을 들어가면 명령어를 통해 톰켓을 제어할 수 있고

conf 에는 각종 설정 (포트 설정 등등)

conf 구조. server.xml이나 context.xml 같이 톰켓에 중요한 설정들을 관리하는 파일들이 보인다. 

webapps 에는 톰켓으로 실행될 어플리케이션이 구조화되어 위치된다. (서블릿 컨테이너 표준에 맞춰 디렉토리가 구조화 되어 있다!)

work에는 serlvet에서 컴파일된 html파일들이 있다.

 

실제로 bin 폴더의 startup 파일을 실행해보면(윈도우는 배치, 나머지는 쉘)  8080(디폴트 포트)에 서버가 열리고 어플리케이션이 실행된다.

< startup.bat 으로 실행 >
< 8080 포트에 실행된 아파치 앱 >

위의 앱은 webapps폴더에 있다.

< 이 중 루트 요청은 ROOT 폴더에 위치 >
< 루트 폴더의 구조 >

index.jsp 파일이 실행되고

WEB-INF에는 web.xml 파일이 존재한다.

 

다른 폴더에도 다음과 같은 구조로 되어 있다.

< docs폴더에 요청해보았다. >

프로젝트를 톰켓의 구조대로 작성한 뒤 적용해볼 수 있다.

톰켓의 서블릿 컨테이너 표준

embeded 방식과 WTP 방식에 대해서는 아래에 좋은 예제가 있기 떄문에 참고 해서 해보면 된다.

embeded 방식

https://www.slipp.net/wiki/pages/viewpage.action?pageId=16711743 

WTP 방식

https://doitnow-man.tistory.com/111