Web application ARchive
In software engineering, a WAR file (or Web application ARchive1) is a JAR file used to distribute a collection of JavaServer Pages, Java Servlets, Java classes, XML files, tag libraries, static web pages (HTML and related files) and other resources that together constitute a web application.
META_INF vs WEB-INF
ETA-INF는 자바 패키징 기술인 jar의 일부입니다. jar는 기본적으로 파일 포맷이 zip과 동일하지만 zip외에 부가적인 규약이 정해져 있고, 그 중 하나가 META-INF 디렉토리와 그 속 몇몇 파일의 포멧과 용도입니다. 반면에 WEB-INF는 웹 애플리케이션 용으로 (servlet 규격으로) 따로 만들어진 디렉터리죠. 스프링 설정 파일을 META-INF에 두는 이유는 해당 애플리케이션을 war가 아닌 jar로 패키징해서 배포할 수 있기 때문입니다. 보통 애플리케이션을 다중 계층 구조로 만들면서 계층별로 별도로 패키징할 계획이라면, 웹과 관련 없는 계층의 메타 데이터는 WEB-INF가 아닌 META-INF에 두는 것이 맞습니다.
WAR 파일의 구성
document root
- JSP pages
- client-side classes
- archives
- static Web resources
- /WEB-INF
- /WEB-INF/web.xml
- 웹 어플리케이션의 구조를 정의 : 서블릿이 포함된 경우 루트될 URL 선언, 서블릿에서 참조할 context 값 정의
- /WEB-INF/web.xml
- ClassLoader의 classpath 이다. 이곳은 웹 애플리케이션이 실행될 때 .class 파일이 로드된다.
- 이 곳에 있는 JAR 파일들은 ClassLoader의 classpath 에 위치한다.