Tomcat 에 Application 별로 다른 포트를 할당하여 띄우려고 하는 경우, 간단히 Server 내에 Service 를 추가하는 방법이 있다. 인터넷에 도메인 네임 별로 호스트를 주는 방법은 많은데 요건 없어서 적어본다.
Tomcat 6 기준이지만, 이하 버전에서도 동일하게 작동할것이라 굳게 믿는다.
Tomcat 은 server.xml 구조가 기본적으로,
<GlobalNamingResource>
</GlobalNamingResource>
<Service [n]>
<Engine>
<Host [n]>
위와 같은 구조로 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 을 별도로 띄우는게 더 좋을듯 하다.
'Software Development > Middleware' 카테고리의 다른 글
Tomcat 5 이상에서의 JNDI JDBC 등록 팁 (0) | 2010.04.21 |
---|---|
[Tomcat] server.xml 에 Context 추가 후 오류 현상 (0) | 2010.02.10 |
WebLogic 의 ClassLoader 메커니즘 (0) | 2010.01.28 |
WebLogic 에서 서로 다른 Context 간 Session 공유 (0) | 2010.01.14 |
Tomcat 5.5 JNDI 에 JDBC 등록 (Eclipse WST 플러그인 기준) (0) | 2010.01.06 |