Ответ
WAR (Web Application Archive) — это стандартный архивный формат (JAR-файл со специальной структурой) для упаковки и развертывания веб-приложений в Java EE/Jakarta EE.
Структура WAR-файла:
myapp.war
├── index.html, welcome.jsp # Веб-ресурсы (HTML, JSP, CSS, JS, изображения)
├── WEB-INF/
│ ├── web.xml # Дескриптор развертывания (конфигурация)
│ ├── classes/ # Компилированные Java-классы (сервлеты, фильтры)
│ └── lib/ # Библиотеки зависимостей (JAR-файлы)
└── META-INF/ # Метаданные архива
Ключевые особенности:
- Стандартизация: Единый формат для всех серверов приложений (Tomcat, Jetty, WildFly).
- Самостоятельность: Содержит все необходимое для работы приложения (кроме самого сервера и JRE).
- Дескриптор развертывания: Файл
web.xml(или аннотации) определяет сервлеты, фильтры, параметры.
Пример конфигурации Maven для сборки WAR:
<project>
<packaging>war</packaging>
<dependencies>
<!-- Зависимость для сервлетов (предоставляется сервером) -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Почему WAR? Он обеспечивает портативность и упрощает процесс развертывания — достаточно скопировать один файл на сервер. В современных подходах (например, Spring Boot) часто используется встроенный сервер и упаковка в исполняемый JAR, но WAR остается стандартом для традиционного развертывания на внешних серверах.