관리 메뉴

SIMPLE & UNIQUE

server.xml의 이해<Apache Tomcat 서버> 본문

Java & Spring/Guide

server.xml의 이해<Apache Tomcat 서버>

착한코딩 2017. 3. 10. 16:43


 Apache Tomcat

  • 아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단(ASF:Apache Software Foundation)에서 개발
  • 서블릿 컨테이너가 있는 웹 애플리케이션 서버(WAS)
  • 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공
  • 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공.

1. server.xml 의 이해

<server.xml 파일 기본 디렉토리>


-C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml 


<기본 구조>

<Service name="Catalina">
      <Connector port="8080" protocol="HTTP/1.1"
       maxThreads="150" connectionTimeout="20000"
       redirectPort="8443" />


      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

        

           <Engine name="Catalina" defaultHost="localhost">
                 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>


           <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"
           xmlValidation="false" xmlNamespaceAware="false">
           </Host>

            </Engine>
</Service>



<Server port="8005" shutdown="SHUTDOWN">

      • 서버는 지정된 포트를 통해 shutdown명령어를 받는다.

**Connector 엘리먼트

요구를 <Engine> 건네 주는 역할한.

<Serviced> 하나 이상의 <Connector> 갖을 필요 있다.

사용자가 HTTP 또는 HTTP/SSL  여러가지 방법으로 요구를 보내면

요구조건과 맞는 <Connector>들이 응답하며, 이를 받은 <Engine>은 매번 동일하게 처리한다. 



<Connector connectionTimeout="5000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

      • connectionTimeout - 타임아웃 시간을 지정한다. 연결 요청 후 URI 요청이 들어오기까지의 대기시간이다.
        기본값은 60초이며 10초 이내로 지정하는게 좋다.(5000은 5초)
      • 시간이 지나도록 연결이 안되지 못하면, 팝업 문구로 실패 메시지가 뜬다.
      • redirectPort="8443" - https로 요청이 들어왔을때 8443번포트로 리다이렉트시킨다

<Connector URIEncoding="utf-8" port="8009" protocol="AJP/1.3"/>

      • AJP - Apache Jserv Protocol
   
<Engine name="Catalina" defaultHost="localhost">
      • 적절한 host로 처리를 넘긴다.

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    • 가상의 호스트를 정의한다.
    • 톰켓의 기본 Document Root는 webapps/ROOT
    • appBase는 $CATALINA_HOME 디렉토리와 상대경로를 받는다.
    • 이때 루트는 $CATALINA_HOME/webapps/ROOT


      <Context path="/drug" docBase="D:/workspace/drugadmin/WebContent" reloadable="true" >

      • 가상호스트에 동작하는 하나의 웹 어플리케이션
      • docBase - 디렉토리를 절대경로로 지정을 하면 원하는 디렉토리를 Document Root로 사용 할 수 있다.
                          Host의 appBase 디렉토리에 대한 상대경로명을 지정할 수도 있다
      • path - docBase의 할당위치
      • 주소창에 http://localhost:8080/drug - 호스트명+포트+path
      • => D:/workspace/drugadmin/WebContent
      • reloadable - true 지정하면, Catalina /WEB-INF/classes/ /WEB-INF/lib  클래스 들의 변경여부를 감시하다가, 변경이 발견되면 웹어플리케이션을 자동으로 재적재(reload)한다.


####docBase를 아래 처럼 프로젝트명(drugadmin)만 입력해도 상관없다.######
(위의 경우는 jsp파일에서 include되는 js파일 버전을 수정시, 경로를 찾지 못하는 오류가 있어서 하위까지 입력했다)


      <Context path="/drug" docBase="drugadmin" reloadable="true" source="org.eclipse.jst.jee.server:drug">

  • docBase를 프로젝트명(상대경로)로 한다면, 뒤에 source(처음 톰캣 연결시 생기는)부분을 그대로 두어야 한다.
  • 톰캣에 디플로이하면 workspace\.metadata\.plugins에 서버에 올라갈 프로젝트 구조가 생성되는데
  • 서버가 파일들을 찾아가는 경로가된다.

  • 또는  
  • <Context path="/drug" docBase="drugadmin" reloadable="true" source="D:/workspace/drugadmin/WebContent">
  • 이런식으로 Source에 workspace상 디렉토리를 적어준다.


'Java & Spring > Guide' 카테고리의 다른 글

JSP 내장 객체  (0) 2017.08.16
out 내장 객체  (0) 2017.08.16
request 내장 객체  (0) 2017.08.16
Java instanceof 연산자  (0) 2017.03.31
Web.xml  (0) 2017.03.13
Comments