2013-02-04 3 views
4

내가 <tomcatHome>/conf/Catalina/localhost톰캣 7 컨텍스트 매개 변수 재정의

에서의 context.xml 파일을 만들어 내 응용 프로그램의 web.xml 파일에서 매개 변수를 무시하려고 오전의 context.xml 파일의 모양과 같은

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/myapp">  
    <Parameter name="port" value="100" override="1"/> 
</Context> 

하지만, 나는 다음을 <tomcat-home>/context.xmlcontext.xml에 직접 <Parameter name="port" value="100" override="1"/>를 넣으면 내가

java.lang.IllegalArgumentException: Document base <path-to-tomcat> apache-tomcat-7.0.35/webapps/context does not exist or is not a readable directory 

말하는 오류가 공장.

내가 뭘 잘못하고 있는지 설명 할 수 있습니까?

답변

6

컨텍스트이라는 응용 프로그램 컨텍스트가 없기 때문입니다. 즉 이라는 웹 응용 프로그램이 웹 응용 프로그램 디렉토리에 배포 된이라는 웹 응용 프로그램이 없습니다.

Defining a context 형태에 관한 공식 문서 톰캣 7 :

개별 콘텍스트 요소는 명시 적으로 정의 될 수있다

:

  • 개별 파일에 /META-INF/context.xml의 안쪽 응용 프로그램 파일. 선택적으로 (호스트의 copyXML 속성을 기반으로) 이 파일은 $ CATALINA_BASE/conf/[enginename]/[hostname] /에 복사되고 은 응용 프로그램의 기본 파일 이름과 ".xml"확장자로 이름이 바뀔 수 있습니다.

  • $ CATALINA_BASE/conf/[enginename]/[hostname]/디렉토리의 개별 파일 (".xml"확장자). 컨텍스트 경로 및 버전은 파일의 기본 이름 ( .xml 확장자보다 작은 파일 이름)에서 파생됩니다. 이 파일은 웹 응용 프로그램의 META-INF 디렉토리에 패키지화 된 모든 context.xml 파일보다 항상 우선 순위를 취합니다.

  • 주 conf/server.xml의 호스트 요소 내부.

그래서, 그것이 작동하지 의 context.xml 사용자 정의 파일의 이름 만 your_app_name.xml합니다.
귀하의 경우에 (정확하게 이해 한 경우) myapp.xml.

이렇게하면됩니다. 나는 방금 그것을 시험했다.

myapp.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context>  
    <Parameter name="port" value="100" override="1"/> 
</Context> 

P.S.

경로없이 얻을 수 있으므로 포함시키지 마십시오. Apache Tomcat 7 documentation에서
:

정적 server.xml에의 문맥을 정의 할 때이 속성에만 사용되어야한다. 다른 모든 환경에서는 경로가 .xml 컨텍스트 파일 또는 docBase에 사용 된 파일 이름 에서 유추됩니다. 어느 Docbase에이 호스트의 appBase 또는 deployOnStartup 및 autoDeploy 모두 거짓입니다 아래에 위치하지 않는 정적 server.xml의 문맥을 정의에도

,이 속성 을 설정할 수 없습니다해야합니다. 이 규칙을 따르지 않으면 이중 배포가 발생할 가능성이 높습니다.

+1

감사합니다. 완벽하게 작동했습니다. –

+0

@ 제프 스톨 리 환영합니다! – informatik01