메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

톰캣 사용하기 I - 자바 웹 애플리케이션

한빛미디어

|

2002-05-15

|

by HANBIT

11,643

저자: 제임스 굿윌(James Goodwill), 역 이상훈

이 기사는 아파치 진영의 자카르타-톰캣(Jakarta-Tomcat) 서버를 다루는 연재 기사의 첫 번째 기사이다. Tomcat 서버는 서블릿과 자바서버 페이지(JSP) 웹 애플리케이션을 생성하고 동작시키는 자바 기반 웹 애플리케이션 컨테이너로 서블릿과 JSP 스펙 모두를 포괄하는 참조 도구로서 자리를 잡고 있다. 본 시리즈의 첫 번째 기사인 「톰캣 사용하기 I - 자바 웹 애플리케이션」은 웹 애플리케이션에 대한 기본 이해를 돕기 위하는데 그 목적을 두고 있다. 일단 기본을 이해하고 나면, Tomcat에 관한 보다 구체적인 논의로 넘어갈 수 있을 것이다. 이 기사는 이미 독자 여러분이 서블릿과 JSP에 대한 기본적인 이해는 하고 있다는 전제 하에 전개될 것이다.

본 기사에서는 다음과 같은 논의를 하고자 한다. 웹 애플리케이션의 정의

자바 서블릿 스펙 2.2가 발표되면서 웹 애플리케이션 개념이 소개 되었다. 이 스펙에 따르면 "웹 애플리케이션은 서블릿, html 페이지, 클래스 그리고 다수의 벤더로부터 다수의 컨테이너에서 동작할 수 있고 묶여질 수 있는 자원들의 모음"으로 정의된다. 이 기사에서는 설명의 편의를 위해 "웹 애플리케이션은 애플리케이션의 웹 레이어에 위치하는 어떤 것들"로 정의하겠다.

웹 애플리케이션의 주요한 특징 중의 하나는 ServletContext와 연관되어 있다는 점이다. 각각의 웹 애플리케이션은 단지 하나의 유일한 ServeltContext를 갖는다. 이 관계는 서블릿 컨테이너에 의해 관리되고 ServletContext에 객체를 저장할 때 웹 애플리케이션이 충돌 되지 않음을 보장한다.

다음과 같은 항목이 웹 애플리케이션에 존재할 수 있다.
  • 서블릿
  • JSP 페이지
  • 유틸리티 클래스
  • XHTML, 이미지, 기타를 포함하는 정적인 문서
  • 클라이언트쪽 클래스
  • 웹 애플리케이션을 기술하는 메타 정보(meta information)
주: 이 항목들은 서블릿 SDK 2.3에서 사용될 것이다.

디렉토리 구조

웹 애플리케이션의 컴포넌트를 가지는 컨테이너는 그것이 존재하는 디렉토리 구조로 이루어져 있다. 웹 애플리케이션을 작성하는 첫 단계는 이 구조를 생성하는 것이다. 아래에 보이는 [표 1]은 onjava로 이름 붙여진 예제 웹 애플리케이션을 포함하고 있으며 각 디렉토리가 가지고 있어야 하는 것들이 표시되어 있다. 이 각각의 디렉토리들은 서블릿 컨테이너의 에서 생성되어야 한다. Tomcat을 사용하는 예제는 /jakarta-tomcat-4.0/webapps가 될 것이다.

[표 1] 웹 애플리케이션 디렉토리 구조
디렉토리
내용
/onjava 웹 애플리케이션의 루트 디렉토리. 모든 JSP 및 HXTML파일이 이곳에 저장된다.
/onjava/WEB-INF 애플리케이션 문서 루트에 포함되지 않은 애플리케이션과 관련된 모든 자원을 포함한다. 이 곳은 웹 애플리케이션의 배치 지시자가 있는 곳이다. WEB-INF 디렉토리는 공개 문서 부분이 아님에 주의하자. 이 곳에 있는 어떤 파일도 클라이언트에 직접 서비스 되지 않는다.
/onjava/WEB-INF/classes 서블릿과 유틸리티 클래스가 있는 디렉토리
/onjava/WEB-INF/lib 웹 애플리케이션이 의존하는 자바 압축파일을 포함하는 디렉토리이다. 예를 들면 이 곳에 JDBC드라이버를 포함하는 JAR파일을 둘 수 있다.

웹 애플리케이션 디렉토리 구조를 잠시 살펴보면 웹 애플리케이션이 /WEB-INF/classes/WEB-INF/lib 디렉토리 양쪽에 클래스가 저장되도록 내버려 둔다는 사실을 발견할 것이다. 이 두 디렉토리에서 클래스 로더는 /classes 디렉토리에서 먼저 클래스를 로드하고 /lib 디렉토리의 JARs들을 로드한다. 만약 디렉토리 /classes/lib에 중복된 클래스가 있다면 /classes 디렉토리에 있는 클래스가 사용될 것이다.

웹 애플리케이션 배치 지시자

모든 웹 애플리케이션의 핵심은 배치 지시자이다. 배치 지시자는 web.xml로 명명된 XML 파일로서 //applicationname/WEB-INF/ 디렉토리에 있으며 웹 애플리케이션 전체의 설정 정보를 기술하고 있다. 본 기사의 애플리케이션에서 web.xml 파일은 //onjava /WEB-INF/ 디렉토리에 있다. 배치 지시자에 담겨있는 정보는 다음의 요소를 포함한다.
  • ServletContext 초기 패러미터들
  • 지역화된 내용 (Localized Content)
  • 세션 설정
  • 서블릿 / JSP 정의
  • 서블릿 / JSP 매핑
  • Mime 타입 매핑
  • Welcome 파일 목록
  • 에러 페이지
  • 보안
아래의 코드는 웹 애플리케이션 배치 지시자의 제한된 예를 담고 있다. 「톰캣 사용하기」연재기사를 진행해 가면서 web.xml 파일과 그 요소들을 좀더 상세하게 살펴볼 것이다.

  The OnJava App
  30
  
    TestServlet
    com.onjava.TestServlet
    1
    
      name
      value
    
  

이 예제에는 세 가지 애플리케이션 레벨 요소를 설정한다. 첫 번째 애플리케이션 레벨 요소는 로서 웹 애플리케이션의 이름을 기술하며 동작하는 기능은 없다.

두 번째 애플리케이션 레벨 요소는 로서 애플리케이션의 HttpSession 오브젝트의 수명을 제어하는 요소이다. 이 값은 JSP/서블릿 컨테이너에게 HttpSession 오브젝트가 30분의 비활동시간이 지나면 무효화 된다는 것을 알려주기 위해 사용된다.

마지막 애플리케이션 레벨 요소는 요소로 정의한 것이다. 이 요소는 서블릿과 그 특성을 정의한다. 보다 많은 요소에 대한 정의는 이후 연재될 기사에서 서블릿과 JSP를 Tomcat에 배치하면서 다룰 생각이다.

웹 애플리케이션 패키징

이제 웹 애플리케이션을 어느 정도 알게 되었기 때문에 배치를 위해 패키지할 수도 있다.

웹 애플리케이션을 패키징 하는 표준은 웹 아카이브(Web Archive) 파일(WAR)을 사용하는 것이다. 이것은 자바의 아카이브 툴인 jar를 이용해 만들 수 있다. 그리고 이것의 예는 웹 애플리케이션의 루트 디렉토리로 이동하여 다음의 명령을 타이핑 해 넣으면 실행될 것이다.
jar cvf onjava.war .
이 명령은 onjava.war로 명명된 아카이브 파일을 생성하며 모든 웹 애플리케이션을 포함하게 될 것이다. 이제 단순하게 이 파일을 배포함으로써 웹 애플리케이션을 배치할 수 있게 될 것이다. 더 자세한 내용은 다음 기사에서 다룰 생각이다.

제임스 굿윌(James Goodwill)은 콜로라도 주 덴버에 있는 Virtuas Solutions, LLC사의 수석 설계자이자 공동 창립자이다.
TAG :
댓글 입력
자료실

최근 본 상품0