By 제임스 굿윌(James Goodwill)
이 기사는 아파치의 자카르타-톰캣 서버에 있는 기사 중 첫 번째 시리즈이다. 톰캣 서버는 서블릿과 자바서버 페이지 웹 애플리케이션에서 구동하기 위해 만든 자바 기반의 웹 애플리케이션 컨테이너이다. 톰캣 서버는 서블릿과 JSP 모두에서 사용되는 레퍼런스 구현이 되었다. 이 글의 목적은 웹 애플리케이션에 대한 기본적인 내용을 전달하는 것이다. 먼저 기본을 익힌 후, 톰캣에 대한 논의를 세부적으로 할 것이다. 이 글은 서블릿과 JSP에 대한 기초 지식이 있는 사람들을 대상으로 하였다.
- 웹 애플리케이션의 정의
- 웹 애플리케이션의 디렉토리 구조
- 웹 애플리케이션 배치 디스크립터(descriptor)
- 웹 애플리케이션을 패키지로 만들기
웹 애플리케이션이란?
자바 서블릿 규약 2.2(Java Servlet Sepcification)가 출시되면서, 웹 애플리케이션이라는 개념이 소개되었다. 이 규약에 따르면, "웹 애플리케이션이란, 다양한 공급자가 만든 다양한 컨테이너에서 구동될 수 있고, 꾸러미로 만들 수 있는 서블릿, html 페이지, 클래스 등의 자원을 모아 놓은 것이다." 즉, 웹 애플리케이션이란, 애플리케이션 중에서의 웹 층에 있는 모든 것을 의미한다.
웹 애플리케이션의 주요 특징 중 하나는, 서블릿컨텍스트(ServletContext)와의 관계이다. 웹 애플리케이션에는 오직 하나의 서블릿컨텍스트밖에 없다. 이러한 관계는 서블릿 컨테이너에 의해 통제되고, 객체를 서블릿컨텍스트에 저장할 때 웹 애플리케이션이 충돌하지 않도록 해 준다.
웹 애플리케이션에는 다음과 같은 아이템이 있다:
- 서블릿
- 자바서버 페이지
- 유틸리티 클래스
- 클라이언트 측 클래스
- 웹 애플리케이션을 설명하는 메타 정보
디렉토리 구조
웹 애플리케이션의 컴포넌트를 담고 있는 컨테이너는 디렉토리 구조로 되어 있다. 웹 애플리케이션을 만들기 위해 제일 먼저 해야 할 일은 구조를 만드는 것이다. 다음 테이블에는 onjava 이름의 샘플 웹 애플리케이션과 각각의 디렉토리에 무엇이 들어가야 하는지를 적어 놓았다. 디렉토리는 서블릿 컨테이너의
에서 만들어야 한다. 톰캣을 사용하는 는, /jakarta-tomcat-4.0/webapps가 될 것이다.
웹 애플리케이션 디렉토리 구조의 내용을 검사하다 보면, 웹 애플리케이션이 클래스가 /WEB-INF/classes와 /WEB-INF/lib 디렉토리 모두에 저장되는 것을 허용한다는 것을 알 수 있을 것이다. 이 두 가지 중에서 클래스 로더는 /lib 디렉토리에 있는 JARS에 첫 번째로 연결되는 /classes 디렉토리에서 클래스를 로드할 것이다. 만약 /classes와 /lib 디렉토리 모두에 클래스의 복사본이 있다면, /classes 디렉토리가 사용될 것이다.
웹 애플리케이션 배치 디스크립터
모든 웹 애플리케이션의 중심에는 배치 디스크립터(deployment descriptor)가 있다. 배치 디스크립터는 //applicationname/WEB-INF/ 디렉토리에 있는 web.xml이라는 이름의 XML파일이다. 전체 웹 애플리케이션에서의 설정 정보를 여기에 기록한다. 여기서 설명한 애플리케이션에서 web.xml 파일은 //onjava /WEB-INF/ 디렉토리에 있다. 설치 디스크립터에 기록되어 있는 정보에는 다음 요소(element)가 있다.
- 서블릿컨텍스트 Init 파라미터
- 지역화된 컨텐트
- 세션 설정
- 서블릿/JSP 정의
- 서블릿/JSP 매핑
- Mime 타입 사상
- 웰컴(Welcome) 파일 리스트
- 에러 페이지
- 보안
다음 코드는 웹 애플리케이션 배치 디스크립터의 예제이다. 이 시리즈에서는 앞으로 web.xml 파일과 요소에 대해 더 자세히 살펴볼 것이다.
The OnJava App
30
TestServlet
com.onjava.TestServlet
1
name
value
|
이 예제에서는 세 가지 애플리케이션 수준의 요소를 설정하고 있다. 첫 번째는 이다. 이 요소는 단지 웹 애플리케이션의 이름만을 설명하며, 실제로는 아무런 작업도 수행하지 않는다.
두 번째는 요소이다. 이 요소는 애플리케이션의 HTTP 세션 객체의 수명을 조정한다. 우리가 위에서 사용했던 값은 JSP/ 서블릿 컨테이너에서 HTTP 세션 객체가 30분동안 아무런 반응이 없으면 무효가 된다는 것을 보여준다.
마지막은 요소이다. 이 요소는 서블릿 및 그 특성을 정의한다. 이에 대해서는 다음 기사에서 서블릿과 JSP를 톰캣에 배치하는 것에 대해 논의할 때 이에 대해 더 깊이 설명할 것이다.
웹 애플리케이션을 패키지로 만들기
웹 애플리케이션이 무엇인지 알아보았으므로, 배치를 위해 그것을 패키지로 만들 수 있을 것이다. 웹 애플리케이션을 패키지로 만들기 위한 표준 매소드는 웹 아키브 파일(WAR: Web Archive file)을 사용하는 것이다. 자바 아키브 툴인 jar를 사용해도 WAR 파일을 만들 수 있다. 예를 들어서, 웹 애플리케이션의 루트 디렉토리로 가서 다음 명령어를 쓴다.
이 명령을 사용하면 onjava.war라는 이름의 아키브 파일을 생성할 수 있는데, 이 파일은 웹 애플리케이션 전체를 포함할 것이다. 따라서 단지 이 파일을 분산하기만 하면 웹 애플리케이션을 배치할 수 있다.
다음에는 "톰캣 설치 및 설정하기"라는 기사를 다룰 것이다.