저자: 제임스 굿윌(James Goodwill), 역 이상훈
본 기사에서는 Tomcat을 이용하여 웹 애플리케이션을 배치하는 것을 다루고자 한다.
배치과정을 가장 잘 설명할 수 있는 방법은 대부분의 자바 애플리케이션에서 찾아 볼 수 있는 중요한 컴포넌트를 포함하는 자신의 웹 애플리케이션을 만들고 배치를 위해 패키지하는 것이다. 다음 섹션부터
onjava로 명명된 하나의 웹 애플리케이션을 배치하는데 필요한 단계를 따라갈 것이다.
이 기사에서 다루게 될 내용은 아래와 같다.
웹 애플리케이션 디렉토리 구조 생성
처음으로 해야 할 일은 애플리케이션을 저장할 디렉토리 구조를 생성하는 것이다. 이 구조에 대해서는 이미
톰캣 사용하기 I - 자바 웹 애플리케이션」에서 언급했으며 [표 1]에 해당되는 상세사항을 기술했다.
[표 1] 웹 애플리케이션 디렉토리 구조 |
디렉토리
|
내용
|
/onjava |
웹 애플리케이션의 루트 디렉토리. 모든 JSP와 HXTML파일이 이곳에 저장된다. |
/onjava/WEB-INF |
애플리케이션 문서 루트에 포함되지 않은 애플리케이션과 관련된 모든 자원을 포함한다. 이곳은 웹 애플리케이션의
배치 지시자가 있는 곳이다. WEB-INF 디렉토리는 공개 문서 부분이 아님에 주의하자. 이곳에 있는 어떤 파일도 클라이언트에 직접
서비스 되지 않는다. |
/onjava/WEB-INF/classes |
Servlet과 유틸리티 클래스가 있는 디렉토리 |
/onjava/WEB-INF/lib |
웹 애플리케이션이 의존하는 자바 압축파일을 포함하는 디렉토리이다. 예를 들면 이곳에 JDBC드라이버를 포함하는
JAR파일을 둘 수 있다. |
웹 애플리케이션 이름인
onjava는 디렉토리 구조의 루트가 된다.
배치 할 때에는 Tomcat의
/webapps 디렉토리에서 직접 생성하기를 권장한다. 배치할 시점에서는 웹 애플리케이션을 WAR파일로 패키지 할 것이고 산출물 배치 과정을 수행할 것이다.
웹 애플리케이션 디렉토리 구조를 생성하는 마지막 단계는 배치 지시자를 추가하는 것이다. 이 시점에서
web.xml 파일을 기술하는 DTD를 포함하고 빈 요소를 갖는 기본
web.xml 파일을 생성할 것이다.
리스트 1 web.xml
이제 이 파일을
TOMCAT_HOME/onjava/WEB-INF/ 디렉토리에 복사하고 나면 다음 섹션부터는 웹 애플리케이션 컴포넌트를 추가하기 시작할 것이다.
웹 애플리케이션 ServletContext만들기
웹 애플리케이션 디렉토리 구조를 생성한 후에 반드시 Tomcat에 새로운
ServletContext를 추가해야 한다.
ServletContext는 일련의 메소드 집합을 정의하며 이 메소드 집합은 서블릿 컨테이너와 동신하기 위한 웹 애플리케이션의 컴포넌트에 의해 사용된다.
ServletContext는 또한 웹 애플리케이션을 위한 컨테이너처럼 동작한다. 웹 애플리케이션당 단 하나의
ServletContext가 존재해야 하며,
ServletContext와 그 웹 애플리케이션의 관계는 이 이후에 다룰 기사에서 더 상세하게 다룰 것이다.
새로운
ServletContext를 Tomcat에 추가하기 위해서는
TOMCAT_HOME/conf/server.xml 파일에 웹 애플리케이션 이름에 대한
path와
docBase 값을 지정해야 한다. 지금 사용하는 이름이
onjava임을 다시 한 번 주목하자.
주의를 기울여야 할 두 가지 사항은 다음과 같다. 첫째,
path="/onjava"는 서블릿 컨테이너에게 서버 URL에 연결된
/onjava를 포함하는 모든 요청은
onjava 웹 애플리케이션에 속한 것임을 알려준다. 둘째,
docBase="onjava"는 서블릿 컨테이너가
/onjava 디렉토리에 존재하는 웹 애플리케이션임을 알려준다.
JSP 추가
이제 웹 애플리케이션 디렉토리를 생성하여
ServletContext를 추가했으므로 서버측 자바 컴포넌트를 추가할 수 있게 되었다. 처음으로 추가하게 될 컴포넌트들은 JSP들이다.
첫 JSP에는 간단한 로그인 화면이 포함될 것이다. 리스트 2에
login.jsp 페이지의 소스가 담겨있다.
리스트 2 login.jsp
OnJava Demo
이 JSP에서 알 수 있듯이 별로 새로운 점은 발견하지 못했을 것이다. 다만 주의 깊게 봐야 하는 것은 폼의
action이다. 그 것은
login이라고 명명된
com.java 패키지 내의 서블릿을 참조하고 있다. 이 서블릿이 유저네임과 패스워드 매개변수를 요청에서 추출하고 스스로의 프로세스를 수행하게 된다.
JSP를 배치하는 것에는 별 다르게 많은 일이 없다. 단지 웹 애플리케이션의 퍼블릭 디렉토리에 복사하기만 하면 된다. 이 경우엔
TOMCAT_HOME/webapps/onjava/일 것이다. 이 JSP가 참조하게 될 이미지들은
/onjava 디렉토리 내에 생성한 이미지 폴더에 있어야만 한다.
이 JSP의 동작을 보려면 다음 URL을 브라우저에서 열면 된다.
http://localhost:8080/onjava/login.jsp
만약 기본 HTTP 포트를 변경했다면 알맞은 포트 값으로 URL을 요청할 필요가 있다. 만약 모든 것이 올바르게 구성되었다면 [그림 1]과 같은 이미지를 보게 될 것이다.
[그림 1] 올바르게 구성되었을 때의 화면
만약 이와 같은 페이지를 보지 못 했다면
"웹 애플리케이션 ServletContext만들기"에서 설명한 대로
server.xml에 기재사항이 정확한지 확인해야 한다.
두 번째 JSP는 다음 섹션에서 정의될 서블릿에 의해 참조되는 타겟 JSP이다. 이 JSP는 다음에 나올 서블릿에 추가될 요청인USER 속성 요청을 추출하게 되고, 속성의 문자열 값을 출력하게 된다. 리스트 3에 타겟 JSP의 소스가 담겨 있다.
리스트 3 Welcome.jsp
OnJava Demo
|
|
Welcome : <%= request.getAttribute("USER")
%>
|
|