2014-06-10 4 views
4

WEB-INF/ 디렉토리에서 검색되는 Servlet 3 사양을 알고 있습니다. 그러나 다른 web.xml 파일이 있다고 생각합니다. 예를 들어 Tomcat has a web.xml file under $CATALINA_BASE/conf/입니다. 나는 아래에 web.xml 파일을 둘 수 있다고 생각합니다.서블릿 : web.xml 파일은 어디에 검색합니까? 여러 web.xml 파일은 어떻게 병합됩니까?

web.xml 개의 파일을 여러 개 수정할 수 있습니까? 그렇다면 어떤 위치에 있고 어떤 순서로 처리되며, "병합"하는 의미는 무엇입니까? (Servlet 사양에서는 web-fragment.xml 파일을 병합하는 것에 대해 설명하고 있지만 별개의 것으로 가정합니다.)

답변

3

두 가지 측면이 있습니다.

Tomcat의 자신의 web.xml은

서블릿 스펙은 컨테이너 (여기 톰캣) 일부 디폴트 구성 요소 (JSP, 기본 서블릿을 ...) 정의 할 수 있습니다. 위에서 보셨 듯이 Tomcat은 기본 web.xml ($CATALINA_BASE/conf/web.xml에만 있음)을 제공합니다. 그 web.xml을 톰캣이 구성 할 수 있습니다 among other things :

  • JSP로 서블릿 컴파일 및 JSP를 실행 (및하여 jspx가)
  • differents의 매핑
  • 을 마임 파일 (직접 파일을 제공)

    1. 기본 서블릿

    Tomcat의 web.xml은 항상 응용 프로그램의 web.xml보다 먼저 구문 분석됩니다. 따라서 모든 응용 프로그램은 tomcat이 정의한 값을 무시할 수 있습니다.

    질문에 답하기 : Tomcat에는 모든 웹 응용 프로그램 ($CATALINA_BASE/conf 디렉토리)과 webapp의 자체 web.xml에 적용되는 web.xml이 하나 있습니다.

    는 웹 fragment.xml version 3.0 of the servlet specification 이후

    는 web.xml을 WEB-INF/classes은 (컨테이너가 웹 애플리케이션 클래스 경로에서 찾을 수있는 WEB-INF/web.xml의 조합과 META-INF/web-fragment.xml의 수가 될 수있다 또는 WEB-INF/lib).

    웹 조각이 파싱되는 순서를 결정할 수 있습니다.

    그리고 Tomcat은 logEffectiveWebXml 속성을 사용하여 결과 web.xml (see doc)

    을 기록 할 수 있습니다