1 설정과 배포
1.1 설정 파일과 사용법
기본적으로 톰캣7은 7개의 설정 파일을 제공한다. 따라서 이들 파일을 이용하면 자신의 환경에 맞도록 쉽게 톰캣을 커스터마이즈할 수 있다.
- catalina.policy : 톰캣 7의 보안 정책 권한을 설정하는 파일. JVM이 웹 애플리케이션에 어떤 보안 정책 권한을 적용할지를 결정한다.
- catalina.properties : 이 파일은 서버를 시작할 때 검색하는 서버, 공유로더, JAR등의 공유 정의를 포함한다.
- server.xml : 톰캣의 중요 설정 파일 중 하나로 IP 주소, 포트, 가상 호스트, 컨텍스트 경로 등과 같은 중요 정보를 포함한다.
- tomcat-users.xml : 역할에 기반한 정의에 따라 인증, 승인에 사용하는 파일이다. 이 파일은 데이터베이스의 사용자/암호/역할을 이용한 인증과 컨테이너로 관리되는 보안 구현에 사용된다. 이 파일을 고쳐서 사용자를 추가/삭제하거나 기존 사용자에 역할을 할당/비할당 할 수 있다.
- logging.properties : 이름에서도 알 수 있는 것처럼 톰캣 인스턴스의 로깅 프로피터를 정의한다.
- web.xml : 톰캣 인스턴스가 시작될 때 모든 애플리케이션의 기본 값을 정의한다.
- context.xml : 애플리케이션을 실행할 때 이 파일의 내용을 로드한다. context.xml에는 세션 저장, 코밋 연결 추적 등과 같은 설정 파라미터가 있다.
1.2 톰캣7 설정하기
톰캣 서버 설정을 살펴보기 전에 웹 애플리케이션이 어떤 단계로 동작하는지 살펴보면 다음과 같다.
1) URL을 입력하면 브라우저는 DNS 서버에 접근한다.
2) DNS서버는 ISP를 통해 요청 정보를 확인한다.
3) 웹 서버가 클라이언트 브라우저의 요철을 수락했다면 그 요청을 데이터베이스 서버로 재전송한다.
4) 데이터베이스 서버는 질의에 대한 정보를 추출해서 웹 서버로 응답한다.
5) 마지막으로 브라우저는 사용자에게 서버의 응답 정보를 표시한다.
이런 과정을 거쳐 웹 브라우저는 웹 서버에서 정보를 얻는다.
1.2.1 DataSource설정
데이터베이스는 기업용 애플리케이션의 핵심으로 모든 웹 애플리케이션에서 중요한 부분을 차지한다. 애플리케이션이 제대로 성능을 발휘하려면 애플리케이션 계층에서 올바르게 데이터소스를 설정해야 한다.
1) URL을 입력할 때마다 요청을 웹 서버로 전송한다.
2) 웹 서버가 클라이언트 브라우저의 요청을 수락한 다음 질의에 기반해 요청을 분석한다. 요청을 처리하는 데 데이터베이스(DB)가 필요하면 요청을 데이터베이스 서버로 재전송한다.
3) 질의를 가지고 데이터베이스 서버는 요청한 자원을 가져와 웹 서버로 응답한다. 웹서버는 데이터베이스 서버의 응답을 클라이언트 브라우저로 전달한다.
1.2.2 JDBC
자바 데이터베이스 연결(JDBC)은 자바 기반 데이터베이스 접근 기술로 클라이언트가 서버 데이터베이스에 접근하는 데 필요한 API를 제공한다. JDBC는 관계형 데이터베이스에 맞게 만들어졌으며 데이터베이스 질의, 갱신 기능을 제공한다.
1.2.3 JNDI
자바 네이밍과 디렉터리 인터페이스(JNDI) 서비스는 자바 프로그래밍 언어를 사용해 만들어진 애플리케이션에 네이밍, 디렉터리 기능을 제공하는 자바 플랫폼 API다.
1.2.4 DataSource
JDBC API를 이용해 관계형 데이터베이스에 접근할 때 사용하는 자바 객체다. JNDI와 통합되고 데이터소스 객체를 JNDI네이밍 서비스에 등록했을 때 위력을 발휘한다. 데이터소스는 애플리케이션 자신만 접근할 수 있으며 데이터베이스에 연결할 때 필요한 객체다.
톰캣 7에서 데이터베이스에 접근하려면 항상 다음 정보가 필요하며 동시에 데이터소스 설정의 선행요소다.
- IP주소
- 포트번호
- JNDI이름
- 데이터베이스 사용자 아이디/비밀번호
1.3 톰캣7에 배포하기
배포란 웹 어플리케이션에 WAR파일을 설치하는 것을 말한다. 즉 톰캣 webapps디렉터리에 WAR파일의 압축을 어떻게 해제할 것인지 정의할 수 있다.
1.3.1 웹아카이브의 구조
톰캣에서 애플리케이션을 보관하고 배포할 수 있도록 웹 애플리케이션을 특정 디렉터리 구조로 만들 수 있다.
웹 애플리케이션에서 사용하는 모든 서블릿, 클래스, 정적 파일, 기타 리소스는 각각의 디렉터리 구조에 저장된다. 이 디렉터리 구조의 루트가 웹 애플리케이션의 문서 루트가 된다. 이 루트 디렉터리에 있는 모든 파일을 클라이언트에 제공할 수 있다. 웹 애플리케이션의 이름을 이용해 애플리케이션의 컴포넌트 요청을 해석한다.
- 웹애플리케이션명/ HTML, JSP같은 모든 정적 파일은 이 디렉터리에 저장한다. 이 디렉터리가 웹 애플리케이션의 루트다.
- /WEB-INF/web.xml 웹 애플리케이션의 배포 디스크립터 파일이다. 애플리케이션 전용 자원을 이 파일에 기술한다.
- /WEB-INF/classes 모든 서버용 클래스나 애플리케이션 전용 서드 파티 클래스를 저장하는 디렉터리
- /WEB-INF/lib JSP완성에 필요한 JAR파일을 포함한다.
- web.xml 모든 동적 파일 관련 세부 사항, 그리고 세션 타임아웃, 데이터소스 정의 등과 같은 설정 관련 정보를 포함한다.
1.3.2 아카이브 파일
실제 업무에서 개발자가 배포할 애플리케이션은 보통 아카이브 파일 형태로 전달한다. 아카이브 파일은 애플리케이션이나 모듈의 클래스, 정적 파일, 디렉터리, 배포 디스크럽터 파일을 모두를 포함하는 하나의 파일이다. 보통 JAR 유틸리티나 Ant JAR 도구를 이용해 아카이브 파일을 만든다.
다음 설명처럼 애플리케이션 형식에 따라 JAR유틸리티 패키지의 확장자가 달라진다.
- EJB는 .jar파일로 패키지
- 웹 애플리케이션은 war로 패키지
- 리소스 어댑터는 .rar로 패키지
- 엔터프라이즈 애플리케이션은 .ear로 패키지하며 이때 EJB, 웹 애플리케이션, 자원 어댑터 등의 조합을 포함할 수 있다.
- 웹 서비스는 .ear이나 .war 파일로 패키지 할 수 있다.
1.4 배포 유형
배포 스테이징 모드는 애플리케이션이나 스탠드어론 모듈을 배포할 대상 서버에 어떻게 배포 파일을 제공할지 결정하는 과정이다. 톰캣7 서버는 다음과 같이 세 가지 스테이징 파일 옵션을 제공한다.
- Stage모드
- Nostage모드
- External_stage 모드
1.4.1 톰캣7에서 애플리케이션을 배포 하는 방법
톰캣7에서는 여러 가지 방법으로 애플리케이션을 배포할 수 있다.
- War배포 : 톰캣의 CATALINA_BASE디렉터리에 WAR파일을 배포한 다음 톰캣이 배포한 애플리케이션을 확인할 수 있도록 톰캣을 재시작한다. 실생활 제품 환경에서 널리 사용하는 방법이다.
- 언팩된 배포 : 해당 인스턴스의 CATALINA_BASE 디렉터리로 WAR파일을 압축 해제한다. 개발 서버에서 흔히 사용하는 방법이다.
- 톰캣 관리자 : 실생활 제품 특히 원격 인프라구조 배포에서 널리 사용하는 좋은 도구다. 원격 시스템에서 톰캣 브라우저로 접속한 다음 애플리케이션을 배포할 수 있다.
- ANT 스크립트 사용 : ANT 스크립트를 이용해 애플리케이션을 배포하는 방법도 있다. ANT 스크립트는 소스/목적지 그리고 대상 파일 정보 등을 포함한다. ANT 스크립트 배포는 톰캣 인스턴스가 실행 중인 상태에서만 동작한다.
- 톰캣 배포자 : TCD는 애플리케이션 배포 도구다. TCD를 이용하려면 ANT가 설치되어 있어야 하며 톰캣 인스턴스가 실행 중인 상태여야 한다. 톰캣 인스턴스에 따로 TCD를 설치할 필요는 없다.