The Apache Tomcat Servlet/JSP Container

아파치 톰캣 7

Version 7.0.28-dev, Oct 2 2013
Apache Logo

Links

Contents

배포

컨텐트 테이블
배경

소스 코드 디렉토리를 어떻게 구조화시키는지 설명하기 전에, 웹 어플리케이션의 실행 구조를 검사하는 것은 매우 유용합니다. 서블릿 버전 2.2 이전의 API 명세서에서는, 서버 플랫폼 간의 작은 일관성이 있었습니다. 그러나, 2.2(그 이후)를 따르는 명세서에서는 아래에 설명되어 있는 표준 형식의 웹 어플리케이션 파일 목록에 동의하는 것을 요구하고 있습니다.

웹 어플리케이션은 표준 형식에 맞춰진 디렉토리및 파일의 계층 구조로 정의됩니다. 이러한 계층구조는 파일시스템에 따로 따로 정의된 파일이나 디렉토리 같은 '압축'되지 않은 것이나, 웹 압축파일이나 WAR 파일같은 알려진 "압축"에 접근할 수 있습니다. The former format 이전 형식은 개발할 때 좀 더 유리하며, 반면에 후자의 것은 당신의 어플리케이션을 설치하도록 하기 위해 배포할 때 유리합니다.

당신의 웹 어플리케이션 계층에서 상위의 디렉토리는 웹 어플리케이션의 document root가 됩니다. 당신은 웹 어플리케이션의 유저 인터페이스를 구성하는 HTML 파일이나 JSP 파일을 넣게 될 것 입니다. 당신의 웹 어플리케이션 계층에서 상위의 디렉토리는 웹 어플리케이션의 document root가 됩니다. 당신은 웹 어플리케이션의 유저 인터페이스를 구성하는 HTML 파일이나 JSP 파일을 넣게 될 것 입니다. 시스템 관리자가 당신의 어플리케이션을 특별한 서버에 배포한다면, 그나 그들은 당신의 context path을 할당하게 됩니다.(다음 문단에서 톰캣에 배포하기 위한 메뉴얼이 정의되어 있습니다). 그러므로, 만약 시스템 관리자가 당신의 어플리케이션은 context path/catalog에 할당한다면, /catalog/index.html를 참조한 요청 URI는 document root에 있는 index.html 파일을 검색할 것 입니다..

표준 디렉토리 형식

필요한 형식의 웹 응용 프로그램 압축파일을 생성하는 것을 촉진시키기 위해서는 웹 어플리케이션의 "실행가능한" 파일을 준비하는 것이 편리합니다. (그것은 톰켓이 당신의 어플리케이션을 실행시킬 때 실제로 사용하는 파일입니다.) 같은 조직화가 WAR 포멧 자체를 위해서 요구됩니다. 이렇게 하기 위해서는, 당신은 아래의 설명을 당신의 어플리케이션의 "Document root"에 끝내야 합니다.

  • *.html, *.jsp, etc. - HTML, JSP 그 외 파일(자바 스크립트, 스타일 시트 파일, 이미지)들은 당신의 어플리케이션을 위해 사용자의 브라우저에 반드시 보여져야 합니다. 커다란 어플리케이션에서는 하위 디렉토리 구조에 그 파일들을 나누는 것을 선택할 수 있지만, 작은 앱에서는 주로 그 파일들을 하나의 디렉토리로 유지시키는 것이 훨씬 간단합니다.

  • /WEB-INF/web.xml - 당신의 어플리케이션의 웹 어플리케이션 배포 서술자입니다. 이 XML파일은 당신 어플리케이션을 구성하는 서블릿과 다른 컴포넌트들과 당신의 서버에서 시행되기를 원하는 컨테이너 관리 보안 제약을 구성하고 있습니다.. 이 파일에 대해서 자세한 설명은 아래의 문단에서 설명하고 있습니다.

  • /WEB-INF/classes/ - 이 디렉토리는 당신의 어플리케이션에서 요구하는, 서블릿이나 서블리이 아닌, jar파일에 결합되어있지 않은 자바클래스 파일(또는 관계되어 있는 자원)을 포함하고 있습니다. If your classes are organized into Java packages, 만약 당신의 클래스들이 자바 패키지로 조직되어 있다면, 반드시 /WEB-INF/classes/아래의 디렉토리 구조에 이것을 반영해야 합니다. 예를 들어, com.mycompany.mypackage.MyServlet으로 이름이 지어진 자바 클래스는 /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class와 같은 파일이름으로 저장되어져야 합니다.

  • /WEB-INF/lib/ - 이 디렉토리는 당신 어플리케이션에서 필요한, 서드 파티 클래스 라이브러리나 ] JDBC 드라이버 같은 자바 클래스 파일(또는 관련된 자원)을 가지고 있는 JAR 파일을 포함합니다.

톰캣(또는 다른 2.2/2.3 호환 서버) 안에 어플리케이션을 설치할 때, 클래스들은 WEB-INF/classes/ 디렉토리 안에 있습니다. 뿐만 아니라 특정 웹 어플리케이션에서 다른 클래스에게 표시되는, JAR 파일안의 모든 클래스들은 WEB-INF/lib/에서 찾을 수 있습니다. 그러므로, 만약 당신이 이러한 위치중의 하나의 라이브러리 클래스를 모두 포함하는 경우, (재배포 권리를 위해 당신이 활용했던 다른 서드 파티 라이브러리의 라이센스들을 체크해야 합니다.), 당신은 간단하게 웹 어플리케이션의 설치를 간단히 힐 수 있습니다. -- 시스템 클래스 패스 조정(또는 서버에 있는 전역 라이브러리 설치)이 필요없을 겁니다..

여기의 대부분의 정보는 서블릿 버전 2.3 API 명세서에서 추출하였습니다. 더 많은 정보를 원하시면 그것을 보셔야 합니다.

공유 라이브러리 파일

대부분의 서블릿 컨네이너와 마찬가지로, 톰캣 또한 한번 JAR 파일 라이브러리(압축이 풀린 클래스) 설치, 그들을 모든 설치된 웹 어플리케이션에서 볼 수 있도록 하는(웹 어플리케이션 자체내에 포함되어 있지 않아도 됩니다.) 매커니즘을 제공하고 있습니다. 톰캣이 어떻게 그런 클래스들을 위치시키고 공유하는지에 대한 설명은 Class Loader HOW-TO에 자세하게 나와있습니다. 위치는 일반적으로 톰캣 설치에 사용된 공유코드 $CATALINA_HOME/lib이내로 사용됩니다. JAR 파일은 웹 어플리케이션과 톰캣 내부코드 둘이 볼 수 있는 위치에 있습니다. 여기는 당신의 웹 어플리케이션이나 톰캣 내부 두 곳에서 필요한 JDBC 드라이버를 놓기에 좋은 장소입니다,(JDBCRealm 같은).

상자 밖에서, 표준 톰캣 설치는 다양한, 이전에 설치되어 공유되는 라이브러리 파일들을 포함하고 있습니다. 포함되는 것 들 입니다:

  • Servlet 3.0JSP 2.1 API는 기본적으로 서블릿과 자바서버 페이지를 작성하는데 기초가 됩니다.

  • XML 파서는 JAXP(1.2 버전) API와 호환됩니다. 즉 당신의 어플리케이션은 DOM에 기초하거나 SAX에 기초한 XML 문서 처리를 수행할 수 있습니다.

웹 어플리케이션 배포 서술자

위에서 언급한, /WEB-INF/web.xml 파일은 당신의 어플리케이션을 위한 웹 어플리케이션 배포 서술자를 포함하고 있습니다. 파일 확장자에서 알 수 있듯이, 이 파일은 XML문서이며, 당신의 어플리케이션에 대해 서버가 알아야 할 모든 것이 정의되어 있습니다. (context path 예외, 그것은 시스템 관리자가 배포할 때 정의합니다.).

배포 기술자의 완벽한 문법과 의미는 서블릿 API 버전 2.3 정의서의 챕터13에 정의되어 있습니다. 시간이 프르면, 개발툴이 당신을 위해서 배포 서술자를 생성하고 편집하는 기능을 제공할 것이라고 예상이 됩니다.그동안은, 출발 지점을 제공하기 위해, basic web.xml 파일가 제공됩니다. 이 파일은 각각의 요소들의 목적을 설명하는 주석을 포함하고 있습니다.

NOTE - 서블릿 명세서는 웹 어플리케이션 배포 서술자와 톰캣이 당신의 어플리케이션의 /WEB-INF/web.xml 파일을 처리할 때 시행할 정책을 위한 문서 타입 서술자(Document Type Descriptor, DTD)를 포함하고 있습니다. 특별한 경우, 당신은 배포자 요소(<필터>, <서블릿>, and <서블릿-매핑> 같은 것들)을 DTD에 정의된 순서대로(구문 13.3을 보세요.) 입력해야만 합니다.

톰캣 컨텍스트 배포자

/META-INF/context.xml 파일은 톰캣의 로거, 데이터 소스, 세션 매니저 설정 등의 구체적인 환경설정을 정의하는데 새용될 수 잇습니다. 이 XML 파일은 반드시 Context 요소를 포함해야 합니다. 컨택스트 요소는 마치 그것이 호스트에 해당하는 호스트 요소의 자식인것 처럼 간주됩니다.

톰캣과 함께 배포

아래의 설명에 사용된 변수 이름 $CATALINA_BASE는 대부분의 상대경로가 해결되는 데 대한 기본 디렉토리를 참조합니다. 만약 여러개의 톰캣을 위해 CATALINA_BASE 디렉토리를 설정을 구성한 적이 없다면, $CATALINA_BASE의 값은 당신이 톰캣을 설치했던 디렉도리로 설정이 될 것 입니다.

실행하기 위해서, 웹 어플리케이션은 서블릿 컨테이너에 배포되어야만 합니다. 개발되는 동안에도 마찬가지 입니다. 우리는 톰캣을 이용하여 개발 환경을 제공하는 것을 설명할 것 입니다. 웹 어플리케이션은 다음 방법 중 하나를 통해 톰캣에서 배포될 수 있습니다.:

  • 압축이 풀린 디렉토리 계층을 $CATALINA_BASE/webapps/안의 하위 디렉토리로 복사합니다. 톰캣은 당신이 선택한 하위 디렉토리 네임을 기초로 하여 컨텍스트 경로를 결정합니다. 우리는 이 기술을, 우리가 만든 build.xml에서 사용합니다. 개발할 때 빠르고 쉬운 방법이기 때문입니다. 반드시 당신의 어플리케이션을 설치하거나 업데이트 한 후에 톰캣을 재시작해주세요.

  • 웹 어플리케이션 압축 파일을 $CATALINA_BASE/webapps/안에 복사합니다.. 톰캣이 시작될 때, 그것은 자동으로 압축되지 않은 폼이 웹 어플리케이션 압축파일로 확장하며, 그러한 방법으로 어플리케이션을 실행합니다. 톰캣이 시작될 때, 그것은 자동으로 압축되지 않은 폼이 웹 어플리케이션 압축파일로 확장하며, 그러한 방법으로 어플리케이션을 실행합니다. 이 방법은 일반적으로 서드 파티 벤더나 당신의 내부 개발진이 이미 톰캣에 설치되어 존재하는 어플리케이션에 추가기능을 설치할 때 사용됩니다. NOTE - 만약 이방법을 사용할 때나 당신의 어플리케이션을 나중에 업데이트 시키고 싶을 때, 당신은 반드시 웹 어플리케이션 압축 파일을 재위치 시키며, 그리고 톰캣이 생성한 추가 디렉토리를 삭제합니다. 그리고 나서 변경사항을 반영시키기 위해 톰캣을 재시작 합니다.

  • 웹 어플리케이션을 배포하거나 배포시키지 않을 때 톰캣 "매니저" 웹 어플리케이션을 사용합니다. 톰캣에는 기본적으로 컨텍스트 경로가 /manager인, 톰캣 서버가 작동하고 있을 도중 어플리케이션을 배포하거나 배포시키지 않을 때에 재시작 없이도 가능하게 만들어주는 웹 어플리케이션이 배포되어있습니다. 매니저 웹 어플리케이션을 활용하는 것에 대해 더 많은 정보가 필요하다면, 관리자 문서를 참조하세요. (TODO: hyperlink)

  • 당신의 빌드 스크립트에 "매니저"의 앤트 작업을 사용하세요.. 톰캣은 당신이 자동으로 "매니저" 웹 어플리케이션의 명령을 자동으로 실행시킬수 있도록 허용해주는 Ant 빌드 툴을 위한 커스텀 작업 정의의 집합을 포함하고 있습니다. 그러한 작업들은 톰캣 배포자에서 사용되고 있습니다.

  • 톰캣 배포자를 사용하세요. 톰캣은 앤트 작업 빌드하기, 서버에 배포되기 전 어플리케이션의 일부분이 되는 JSP를 프리컴파일 할 수 있는 패키지 툴을 포함하고 있습니다.

당신의 어플리케이션을 다른 서블릿 컨테이너에 배포하는 것은 각각 컨테이너의 특성에 따라야 합니다. 하지만 서블릿 API 명세서(2.2 버전이거나 그 이후)에 호환이 되어 있는 모든 컨테이너들은 웹 어플리케이션 압축 파일을 적용하는 것을 필요로 합니다. Note 다른 컨테이너들은 압축되지 않은 디렉토리 구조를 적용하는 것을 요구하지 않거나(톰캣이 그러합니다.), 공유 라이브러리 파일에 대한 매커니즘을 제공하지만, 이러한 기능은 일반적으로 가능합니다.


Copyright © 1999-2013, Apache Software Foundation