프로그래밍 언어/자바 웹

컨테이너에서 웹 애플리케이션 실행하기

· 코딩마이데이

컨테이너에 웹 애플리케이션 등록

웹 애플리케이션은 일반 PC에서 실행되는 자바 애플리케이션과 달리 단독으로 실행할 수 없습니다. 웹 애플리케이션은 톰캣과 같은 웹 컨테이너에서 실행되는 구조입니다. 따라서 웹 애플리케이션을 실행하려면 우선 톰캣에 등록부터 해야 합니다.

웹 컨테이너에 톰캣 컨테이너에 등록하는 벙법은 다음 두 가지입니다.

%CATALINA_HOME%webApps 디렉터리에 애플리케이션을 저장

server.xml에 직접 웹 애플리케이션을 등록

 

첫 번째 방법은 CATALINEA_HOME, 즉 설치한 톰캣 루트 디렉터리의 하위 디렉터리인 webapps 폴더에 작성한 웹 애플리케이션을 위치시킨 다음 톰켓을 껐다가 다시 실행하면 톰캣이 자동으로 웹 애플리케이션을 인식한 후 실행시키는 방법입니다. 두 번째 방법은 임의의 장소에 위치해 있는 웹 애플리케이션을 톰캣의 설정 파일은 server.xml에 등록해서 실행하는 방법입니다.

우선 첫 번째 방법부터 알어봅시다.

1. C 드라이버의 webShop 폴더 전체를 복사한 후 톰캣 루트 디렉터리의 하위에 있는 webapps 폴더에 붙여 넣습니다.

톰캣의 webapps 폴더에 webShop 프로젝트 복사 & 붙여 넣기

 

2. VS Code를 실행한 후 상단 메뉴의 File > newFile을 선택합니다.

File > New File 선택

 

3. 다음과 같이 HTML 코드를 입력합니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello JSP!</title>
</head>
<body>
    Hello JSP!<br>
    안녕하세요!!
</body>
</html>

 

4. 상단 메뉴의 File > Save를 선택하고 파일 이름을 main.html로 수정한 후 webShop 폴더에 저장합니다.

main.html로 저장

 

톰캣 실행

이제 웹 애플리케이션을 서비스하기 위해 톰캣을 실행해 보겠습니다.

1. 톰캣을 설치한 루트 디렉터리의 bin폴더를 이동합니다.

톰캣 컨테이너의 bin 디렉터리로 이동

 

2. bin 디렉터리의 Tomcat9.exe를 더블클릭해 실행합니다.

Tomcat9.exe를 실행

 

3. 콘솔창이 나타나면서 톰캣 컨테이너가 실행됩니다.

톰캣 실행 시 출력되는 로그

 

브라우저에서 웹 애플리케이션 요청

이제 톰캣 컨테이너가 시작되면서 webShop 애플리케이션이 자동으로 등록되어 실행될 것입니다. 그럼 톰캣이 실행시킨 webShop 애플리케이션을 웹 브라우저에서 요청해 보겠습니다.

다음은 톰켓에서 실행한 웹 애플리케이션을 웹 브라우저에서 요청하는 방법입니다.

http://IP주소:포트번호/컨텍스트이름/요청파일이름

먼저 톰캣 컨테이너가 위치해 있는 IP 주소를 입력하고 콜론(:)으로 구분하여 톰캣 설치 시에 입력한 포트 번호(여기서는 8090)를 입력합니다. 그런 다음 콘텍스트 이름(여기서는 webShop)을 입력합니다.

http://localhost:8090/webShop/main.html

웹 브라우저애서 요청 시 실행 결과

 

컨텍스트란?

server.xml에 등록하는 웹 애플리케이션을 컨텍스트(Context)라 부릅니다. 즉, 톰캣이 입장에서 인식하는 한 개의 웹 애플리케이션이라고 보면 됩니다.

컨테이너 실행 시 웹 애플리케이션당 하나의 컨텍스트가 생성됩니다.

컨텍스트의 주요 특징은 다음과 같습니다.

  • 웹 애플리케이션당 하나의 컨텍스트가 등록됩니다.
  • 웹 애플리케이션 이름과 같을 수도 있고 다를 수도 있습니다.
  • 컨텍스트 이름은 중복되지 않습니다.
  • 웹 애플리케이션의 의미를 가장 잘 나타날 수 있는 명사형으로 지정합니다.
  • 대소문자를 구분합니다.
  • server.xml에 등록합니다.

톰캣 컨테이너에 컨텍스트 등록하기

이번에는 임의의 폴더에 만든 webShop 웹 애플리케이션을 server.xml에 컨텍스트로 등록해서 실행하는 과정을 알아보겠습니다. server.xml은 톰캣 설치 디렉터리 아래, conf 디렉터리 안에 있습니다.

server.xml의 위치

 

server.xml에 컨텍스트를 등록하려면 다음과 같이 <Context> 태그를 이용해야 합니다.

코드 server.xml에 컨텍스트 등록하기

<Context path="/컨텍스트 이름"
                  docBase="실제 웹 애플리케이션의 WEB-INF 디렉터리 위치"
                  reloadable="true 또는 false" />

 

코드 등록 예

<Context path="/webMal"
	docBase=" C:\\webShop"
	reloadable="true" />

 

일반적으로 컨텍스트 이름은 웹 애플리케이션 이름과 동일하게 합니다.

 

server.xml을 메모장이나 VS Code로 열어 149행 쯤에 있는 <Host> 태그 안에 <Context> 태그를 이용해서 등록합니다.

server.xml에 컨텍스트 등록

 

코드 C:/tomcat9/conf/server.xml

<Context path="/webMal"
               docBase="C:\webShop"
               reloadable="true"/>

 

그리고 첫 번째 톰캣 실행 시 사용한 main.html을 복사하여 C:\webShop에 븥여 넣습니다.

앞의 실습 예제에서 사용한 main.html 복사 & 붙여 하기

 

 

그런 다음 톰켓을 재실행하여 웹 브라우저에서 등록한 컨텍스트 이름인 /webMal/main.html로 요청합니다.

  • http://localhost:8090/webMal/main.html

다음은 웹 브라우저에 표시된 결과 화면입니다.

톰캣 재실행 후 웹 브라우저 요청한 결과

 

톰캣 컨테이너에서의 웹 애플리케이션 동작 과정

실제 웹 브라우저에서 컨텍스트 이름으로 요청할 경우 웹 애플리케이션이 동작하는 과정은 다음과 같습니다.

  • http://localhost:8090/webMal/main.html

웹 브라우저에서 컨텍스트 이름(webMal)으로 요청합니다.

요청을 받은 톰캣 컨테이너는 요청한 컨텍스트 이름이 server.xml에 있는지 확인합니다.

해당 컨텍스트 이름이 있으면 컨텍스트 이름에 대한 실제 웹 애플리케이션이 있는 경로(C:\webShop)로 가서 요청한 main.html을 클라이언트 웹 브라우저로 전송합니다.

웹 브라우저는 전송된 main.html을 브라우저에 나타납니다.

 

컨텍스트 이름으로 요청할 경우 이 컨텍스트 이름이 미리 server.xml에 등록되어 있어야 합니다. 만약 등록되어 있지 않은 컨텍스트 이름으로 요청하면 404 오류가 발생합니다.

등록되지 않은 컨텍스트 이름으로 요청할 경우 404 오류 발생