2012-07-30 7 views
12

Tomcat을 사용하여 응용 프로그램을 배포하고 있습니다. 다중 컨텍스트 경로를 서버에 배치해야하는 하나의 단일 전쟁으로 배포하고 싶습니다.Tomcat에서 여러 컨텍스트를 동일한 war 파일에 매핑하는 방법은 무엇입니까?

현재 app1.war 및 app2.war이 있지만 둘 다 동일한 내용 만 있습니다. 이름은 http : /// app1 및 http : ///app1.war를 통해 액세스하는 것과 다릅니다. 하지만이 일을하고 싶습니다. app.war을 배포하고 app1 및 app2 컨텍스트 경로를 통해 액세스합니다. 바람둥이에서 할 수 있습니까? 제발 도와주세요

+1

여전히 동일한 webapp (동일한 로컬 데이터 공유) 또는 webapps가 실제로 별도의 인스턴스 여야합니까? – Daniel

답변

20

이것은 여러 가지 방법으로 수행 할 수 있습니다. 나는이 방법은 가장 간단한 생각 :

  1. 이동하여 WAR 파일에서 추출 META-INF/context.xml
  2. webapps/ 자동 배포 디렉토리 외부 WAR 파일. 당신의 WAR은 META-INF/context.xml 파일이없는 경우, 단지 app1.xmlapp2.xml 모두 같은 Tomcat의 conf/[service]/[host]/ 디렉토리로
  3. 복사에서 <Context /> 아무것도하지만이 파일을 파일을 사용합니다. ([service]는 일반적으로 "Catalina"이고 [host]는 가상 호스트의 이름입니다. 기본 Tomcat 구성에서 호스트 이름은 항상 "localhost"입니다). 모두 app1.xmlapp2.xml<Context> 요소는 당신이 1
  4. Tomcat을 다시 시작 단계 번호 이동 WAR 파일을 가리 키도록하기위한 docBase 속성을 설정

이한다고

  • 편집은 당신에게 하나의 물리적를 제공합니다 WAR 파일 및이 파일에서 배포 된 다중 컨텍스트

    Tomcat이이 구성을 지원하지만 권장 할만한 것은 디스크 공간이 저렴하고 런타임에 아무 것도 변경하지 않고 (여전히 메모리에있는 모든 복사본을 두 장씩 가져옵니다) 서로 다른 컨텍스트에 다른 WAR 파일을 배포 할 수있는 유연성이 떨어집니다 및/또는 모두 컨텍스트의 구성을 수정하지 않고 개별적으로 업데이트 할 수 있습니다.

    내 충고를 원하면 WAR 파일을 복제하십시오.

  • +0

    중복 된 WAR를 사용하는 것에 동의한다고 생각하지만 비슷한 상황에 있으며 연속 아티스트 파이프 라인을 통과하도록 단일 아티팩트를 갖는 것은 매우 깔끔합니다. WAR를 호스트 appBase 외부에두면 Tomcat v7로 풀 수 없다는 것을 언급 할 가치가 있습니다. 따라서 언 패킹이 필요한 앱 (예 : 슬프게도)과 같은 경우 위와 같지 않습니다. 옵션. – Conan

    +1

    그런 WARs는 개봉 할 수는 있지만 직접 풀어야합니다. 물론이 모든 것을 스크립팅 할 수도 있습니다. –