2013-10-22 7 views
6

웹 응용 프로그램의 context.xml에서 docBase 속성에 대한 상대 경로를 설정하는 방법이 있습니까?이 경로가 tomcat 서버 인스턴스의 appBase 디렉토리 밖에 있습니까?Context.xml의 상대 경로

컴퓨터간에 컨텍스트 구성을 공유하고 응용 프로그램을 war 파일이 아닌 디렉토리에 보관하고 싶습니다. 그런 식으로 클래스를 프로젝트 개발 디렉토리의 해당 디렉토리에 직접 컴파일하고 tomcat이 복사/패키징이 필요없이이 클래스를 사용할 수 있습니다.

나는 tomcat 8.0.0-RC5를 사용하고 있습니다. 내 디렉토리 레이아웃은 다음과 같습니다 나는

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/frontend" docBase="../../frontend/web-content"> 
</Context> 

을 시도했지만 그 작동하지 않았다

/home/david/projects/frontend/web-content   <-- the static html files 
/home/david/projects/frontend/web-content/WEB-INF <-- the WEB-INF with the web.xml 
/home/david/projects/tomcat      <-- tomcat base directory 
/home/david/projects/tomcat/Catalina/localhost  <-- holds the frontend.xml context configuration 

./web-content 앞의 전체 경로는 무시 된 것 같습니다. 로그는 말한다 : 상황에 맞는 컨테이너

The main resource set specified [/home/david/projects/tomcat/webapps/web-content] is not valid 

Tomcat 8 documentation

는 말한다 :

당신은이 디렉토리 나 WAR 파일의 절대 경로 이름, 또는의 appBase 디렉토리에 상대적인 경로 이름을 지정할 수 있습니다 호스트를 소유하고 있습니다.

여기서 상대적으로 appBase (no .. allowed)의 엄격한 하위 디렉토리를 의미합니까?

절대 경로 설정은 문제없이 작동합니다. 구성

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content"> 
</Context> 

작동하지만 내 컴퓨터에만 해당됩니다. 따라서 더 이상 수정하지 않고 컨텍스트 구성을 공유 할 수는 없습니다.

tomcat 서버의 appBase 디렉토리에 심볼릭 링크를 만들고 응용 프로그램의 웹 콘텐츠 폴더를 가리킬 수 있습니다. 이것은 작동하지만, 리눅스와 윈도우 머신에서는 서로 다른 설정 (심볼릭 링크)을 가졌을 것이다.

+2

정확하게'appBase'가 server.xml에 어떻게 설정되어 있습니까? – david

+0

server.xml에서 호스트 구성을 변경하지 않았으므로 여전히 기본값입니다. david

답변

5

상대 경로 이름의 성만 사용하고 첫 번째 부분은 무시합니다. 은 대부분 tomcat의 버그입니다. 상대 경로 이름이 작동해야하거나 오류가 발생해야합니다. 하지만 부품을 무시하는 것은 좋지 않습니다. 해결 방법은 다음과 같이 절대 경로 이름을 사용하여 수 : 난 그냥 톰캣 8.0.15의 변경 로그를 읽고 <Context docBase="${catalina.home}/../www.war"

. 버그가 수정되어야합니다 (!) : "컨텍스트의 docBase 특성에 대한 상대 값을 올바르게 처리합니다."