본문 바로가기
카테고리 없음

multiple instance tomcat 6 on the window os

by jjerryhan 2010. 8. 19.
반응형
Tomcat 의 경우 Catalina_Base 설정을 통해 전체 디렉토리를 복사하지 않고도 instance 를 분리할 수 있도록 지원합니다.
.
Tomcat 을 script 로 실행하는 경우에는 실행전에 set CATALINA_BASE 를 주어서 실행 instance 를 분리해 줄수 있는데, Window OS 경우에는 script 가 아닌 tomcat6.exe 로 실행이 되기 때문에 service 로 등록하는 시점에 CATALINA_BASE 값이 고정이 되지요.  물론 Service Installer 를 사용하지 않고 zip 형태의 배포판을 사용하면 startup.bat / shutdown.bat 을 활용할 수 있지요.

startup.bat / shutdown.bat 을 활용하면 쉽긴한데 Window Service 로는 등록이 되지 않죠.

그래서 좀더 찾아보니 tomcat6.exe 의 명령어를 통해 CATALINA_BASE 를 분리하여 Service 로 등록할 수 있는 걸 알게되었죠. 

tomcat6 //IS//%1 \
--DisplayName="Tomcat 6 Instance %1" \
--Description="Tomcat 6 Instance %1" \
--Install="%CATALINA_HOME%\bin\tomcat6.exe" \
--Classpath="%CATALINA_HOME%\bin\bootstrap.jar" \
--Jvm=auto \
--Startup=auto \
--StartMode=jvm \
--StartPath="%CATALINA_HOME%" \
--StopMode=jvm \
--StartClass=org.apache.catalina.startup.Bootstrap \
--StartParams=start \
--StopClass=org.apache.catalina.startup.Bootstrap \
--StopParams=stop \
--StopPath="%CATALINA_HOME%" \
--Startup=auto \
--LogPath="%CATALINA_BASE%\logs" \
--StdOutput=auto \
--StdError=auto \
--JvmOptions="-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed"

매우 길다는.

그래서 간단한 bat 파일 예제를 찾아 적용합니다.
http://boplicity.nl/confluence/display/Tomcat/Running+multiple+tomcat+instances+on+Windows

[예제]
Tomcat Engine Home : C:\Tomcat6
1. Instance1 Catalina Base : C:\Tomcat6\instances\myinstance
2. Instance2 Catalina Base : C:\Tomcat6\instances\anotherinstance
 
위 각각 경로 아래. conf / webapp 등의 개별 instance 가 참조하는 표준 경로를 만들고 파일을 생성합니다.
 
각 instance 경로의 conf 경로에 있는 익숙한 server.xml 을 통해 개별 instance 의 server 정보를 관리할 수 있구요. (포트 정보 포함)
Instance1 server.xml : C:\Tomcat6\instances\myinstance\conf\server.xml
Instance2 server.xml : C:\Tomcat6\instances\anotherinstance\conf\server.xml
 
각 instance 에 대한 서비스는 tomcat6.exe 의 명령을 통해 분리해서 등록이 가능하며
C:\Tomcat6\bin 폴더에 create-instance.bat 이라는 배치파일을 추가해서 instance 에 대한 service 등록시 활용할 수 있게 해주면 관리가 쉽습니다. (첨부파일 #1 참조)

해당 배치파일을 사용하는 방법은 추가하고자 하는 instance 를 C:\Tomcat6\instances 경로하에 추가한 후, 추가한 경로 및에 Catalina_Base 표준 경로인 conf / webapp / log 등을 추가하고 파일들을 복사해서 위치 시킵니다. 물론 설정도 개별 instance 에 맞게 수정해 줍니다.

수정이 완료되면 아래 처럼 실행해서 instance 에 따른 Window Service 를 등록합니다.
 
1. C:\Tomcat6\instances\Instance1  에 대한 Window Service 등록의 경우 :: create-instance.bat instance1
2. C:\Tomcat6\instances\Instance1  에 대한 Window Service 등록의 경우 :: create-instance.bat Instance2
 
실행하면 각각 Tomcat 6 Instance instance1 / Tomcat 6 instance instance2 이름으로 서비스가 등록이 됩니다.

ref : http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html