JSP(JavaServer Page) 정적 파일 액세스를 위한 웹 컨테이너 구성

애플리케이션 구성에 따라 웹 컨테이너는 최대 4개의 다른 위치에서 정적 파일과 JSP(JavaServer Page) 파일을 검색합니다. 이 검색은 인바운드 요청을 제공하는 적절한 자원과 다음 API에서 리턴된 결과를 찾는 것과 관련되어 있습니다.
URL ServletContext.getResource(String path)
Set ServletContext.getResourcePaths(String path) 
주의: 정적 파일은 fileServing 특성이 사용 가능하고 애플리케이션이 /* 서블릿 맵핑을 포함하지 않는 경우에만 검색됩니다. 또한 JSP 파일에는 web.xml 파일에 정의된 다른 패턴 외에 다음 확장자를 가진 파일이 포함됩니다.
  • .jsp
  • .jspx
  • .jsw
  • .jsv
우선순위에 따라 4개 위치는 다음과 같습니다.
애플리케이션 WAR 디렉토리
웹 컨테이너는 우선 애플리케이션 WAR 디렉토리에서 요청한 자원을 검색합니다. 그러나 getResource() 및 getResourcePaths() 메소드를 사용하여 액세스할 수 있다 하더라도 인바운드 요청의 WEB-INF 또는 META-INF 디렉토리에 자원을 제공할 수 없습니다.
사전 단편 문서 루트
웹 컨테이너는 두 번째로 애플리케이션에서 정의한 사전 단편 문서 루트를 검색합니다. 애플리케이션의 WEB-INF 디렉토리에 있는 ibm-web-ext.xmi 파일에 사전 단편 문서 루트를 정의하십시오. 정적 파일 또는 JSP 파일에 대한 사전 단편 문서 루트를 다음과 같이 정의하십시오.
Static files:
<fileServingAttributes xmi:id="<user-provided name>"
 name="preFragmentExtendedDocumentRoot"
 value="<user provided value>"/>
JSP files:
<jspAttributes xmi:id="<user provided name>" name="preFragmentExtendedDocumentRoot"
 value=<user provided value>"/> 
<user provided name> 은 디렉토리 및/또는 jar 목록의 목록일 수 있습니다. 예:
<fileServingAttributes name="extendedDocumentRoot"
      value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
<user provided name> 에 디렉토리 목록만 포함되어 있고 해당 디렉토리에 jar 파일이 포함된 경우 해당 jar 파일 내에서 검색하지 않습니다. 해당 디렉토리 내부에서만 정적 파일 및 JSP 파일을 검색하며 jar 파일 외부에서는 검색하지 않습니다. 정적 또는 JSP 파일이 jar에 있는 경우, 정적 또는 jsp 파일은 제한된 폴더이므로 jar 파일의 META-INF 폴더에 있을 수 없으며 <user provided name> 에는 jar 파일의 전체 경로가 포함되어야 합니다.
주의: 사전 단편 문서 루트는 WebSphere® Application Server 버전 9.0의 새 기능입니다.
애플리케이션 WAR 파일의 WEB-INF/Lib 디렉토리에 있는 단편의 META-INF/자원 디렉토리
사전 단편 문서 루트를 검색한 후 웹 컨테이너는 웹 단편을 검색합니다. 웹 단편은 애플리케이션 WEB-INF/lib 디렉토리의 JAR 파일로 구성됩니다. JAR에는 JAR 파일 내에 정의된 META-INF/자원 디렉토리의 정적 자원이 포함될 수 있습니다. 웹 컨테이너가 META-INF/자원 디렉토리를 검색하지 못하도록 하려면 com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing 웹 컨테이너 사용자 정의 특성을 true로 설정하십시오. 사용자 정의 특성의 기본값은 false입니다.
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
주의: 응용프로그램 WAR 파일의 WEB-INF/Lib 디렉토리에 있는 단편의 META-INF/resources 디렉토리는 WebSphere Application Server 버전 9.0의 새 기능입니다.
확장된 문서 루트
마지막으로 웹 컨테이너는 확장된 문서 루트로 정의된 애플리케이션을 검색합니다. 확장된 문서 루트는 이전 릴리스에서도 사용 가능했고 애플리케이션 WEB-INF 디렉토리에 있는 ibm-web-ext.xmi 파일에 정의되어 있습니다. 정적 파일 또는 JSP 파일에 대한 확장된 문서 루트를 다음과 같이 정의하십시오.
Static files:
<fileServingAttributes xmi:id="<user provided name>" name="extendedDocumentRoot"
 value="<user provided value>"/>
JSP files:
<jspAttributes xmi:id="<user provided name>" name="extendedDocumentRoot"
 value=<user provide value>"/>
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
<user provided name> 은 디렉토리 및/또는 jar 목록의 목록일 수 있습니다. 예:
<fileServingAttributes name="extendedDocumentRoot"
      value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
<user provided name> 에 디렉토리 목록만 포함되어 있고 해당 디렉토리에 jar 파일이 포함된 경우 해당 jar 파일 내에서 검색하지 않습니다. 해당 디렉토리 내부에서만 정적 파일 및 JSP 파일을 검색하며 jar 파일 외부에서는 검색하지 않습니다. 정적 또는 JSP 파일이 jar에 있는 경우, 정적 또는 jsp 파일은 제한된 폴더이므로 jar 파일의 META-INF 폴더에 있을 수 없으며 <user provided name> 에는 jar 파일의 전체 경로가 포함되어야 합니다.
주의: com.ibm.ws.webcontainer를 설정할 수 있습니다.정적 파일 확장 문서 루트에서 정적 환영 페이지를 제공하려면 ServeWelcomeFileFromExtendedDocumentRoot 사용자 정의 특성을 true 로 설정하십시오. 사용자 정의 특성의 기본값은 false입니다.
com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot = true
com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot 특성이 true로 설정된 경우 웹 컨테이너는 정적 파일 확장 문서 루트에서 정적 시작 파일을 검색하여 올바른 부분 URL로 구성된 요청을 지원할 수 있습니다. 예를 들어, 요청에서 애플리케이션 컨텍스트만 지정하고 시작 파일이 index.html로 지정된 경우 index.html이 정적 파일 확장 문서에서 제공된다면 특성을 설정해야 합니다.
com.ibm.ws.webcontainer.enablepartialurltoextendeddocumentroot = true
기본값은 false입니다.

이 특성이 true로 설정된 경우 인바운드 요청이 올바른 부분 URL에 대한 것인지 판별할 때 정적 파일 확장 문서 루트의 컨텐츠가 웹 컨테이너에 포함됩니다. 예를 들어, 요청에서 /<application context>/<text>로 끝나는 URL을 지정하고 <text>가 서블릿 또는 정적 파일에 맵핑되지 않는 경우 <text>가 애플리케이션의 올바른 디렉토리인 경우에만 웹 컨테이너가 이 URL을 올바른 부분 URL로 고려합니다. 따라서 <text> 디렉토리가 정적 파일 확장 문서 루트에만 있는 경우 URI가 올바른 부분 URI로 고려되도록 하려면 이 특성을 설정해야 합니다.

중요: 이러한 특성은 정적 파일 사전 단편 문서 루트에는 필요하지 않습니다. 또한 올바른 부분 URL을 판별할 때 웹 컨테이너가 JSP 사전 단편 및 확장 문서 루트를 고려하지 않습니다.