'톰캣'에 해당되는 글 1건


Tomcat 에 Application 별로 다른 포트를 할당하여 띄우려고 하는 경우, 간단히 Server 내에 Service 를 추가하는 방법이 있다. 인터넷에 도메인 네임 별로 호스트를 주는 방법은 많은데 요건 없어서 적어본다.

Tomcat 6 기준이지만, 이하 버전에서도 동일하게 작동할것이라 굳게 믿는다.

Tomcat 은 server.xml 구조가 기본적으로,
<Server>
<Listener [n]/>
<GlobalNamingResource>
</GlobalNamingResource>
<Service [n]>
<Connector [n]/>
<Engine>
<Realm [?]/>
<Host [n]>
<Context [n]>
<Resource [n]/>
</Context>
</Host>
</Engine>
</Service>
</Server>


위와 같은 구조로 server.xml 을 구성할 수 있다. [n] 은 복수개가 올 수 있다는 것이다.
그래서, Service 를 여러개 만들면, 다른 포트를 가질 수 있는 커넥터와 묶인 Host 를 만들 수 있다.

대충 이런구조가 될 수 있다.

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

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="8080" protocol="HTTP/1.1"
               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="false"
            xmlValidation="false" xmlNamespaceAware="false">

      </Host>
    </Engine>
  </Service>

  <Service name="Hudson">
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Hudson" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="hudson_webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      <Context displayName="hudson" docBase="/home/apps/hudson/war"
            path="" workDir="" />

      </Host>
    </Engine>
  </Service
>
</Server>



저러면 8080 으로 서비스 하는 host 와 8081 로 서비스하는 Host 가 각각 하나씩 뜨게 된다.
그런데 Tomcat Instance 는 하나라서 성능이 어떻게 될지는 장담하지 못한다는거~
실제 운영환경에서는 Tomcat 을 별도로 띄우는게 더 좋을듯 하다.

반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,