Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# WAR (Web Application Archive)
Определение
WAR (Web Application Archive) — это стандартный формат упаковки веб-приложений на Java для развёртывания на сервере приложений (application server).
Основное назначение
1. Структурированная упаковка
WAR-файл содержит всё необходимое для работы веб-приложения:
- Java-классы (WEB-INF/classes)
- JAR-зависимости (WEB-INF/lib)
- Статические ресурсы (HTML, CSS, JavaScript, изображения)
- Конфигурационные файлы (web.xml, конфиги приложения)
- JSP-страницы
2. Стандартизация
WAR — это ZIP-архив со строгой структурой, которую понимают все Java-серверы:
app.war/
├── WEB-INF/
│ ├── classes/ // скомпилированные классы
│ ├── lib/ // JAR-зависимости
│ └── web.xml // дескриптор развёртывания
├── META-INF/
├── index.jsp // JSP-страницы
└── css/, js/, img/ // статические ресурсы
3. Развёртывание на серверах приложений
WAR идеален для развёртывания на:
- Apache Tomcat — просто скопировать в папку webapps/
- JBoss/WildFly — поддержка горячего развёртывания
- Jetty, WebLogic, WebSphere
- Облачные платформы (AWS, Google Cloud)
Пример развёртывания:
# Tomcat автоматически развернёт приложение из war-файла
cp application.war /opt/tomcat/webapps/
# Сервер самостоятельно создаст директорию application/ и распакует файл
4. Контроль жизненного цикла
Файл web.xml определяет:
- Точки входа (servlets)
- Фильтры (filters)
- Listeners
- Сессионные параметры
- Security constraints
Пример:
<web-app>
<servlet>
<servlet-name>MainServlet</servlet-name>
<servlet-class>com.example.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
5. Изоляция и безопасность
- Каждый WAR запускается в отдельном контексте приложения
- Классы из разных WAR не пересекаются (отдельные ClassLoaders)
- Изоляция данных и сессий между приложениями
WAR vs JAR
| Параметр | WAR | JAR |
|---|---|---|
| Назначение | Веб-приложения | Библиотеки, микросервисы |
| Структура | Строгая, со статикой | Гибкая |
| Запуск | На сервере приложений | Как java -jar |
| Статика | Встроена в архив | Не предусмотрена |
| Современность | Устаревает (Spring Boot) | В тренде (микросервисы) |
Современная альтернатива
В эпоху Spring Boot WAR стал менее актуален. Spring Boot проекты часто упаковываются как:
<packaging>jar</packaging>
и содержат встроенный Tomcat:
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
// Создаёт встроенный Tomcat автоматически
}
}
Однако WAR остаётся полезным для:
- Legacy приложений
- Корпоративных решений (JBoss, WebLogic)
- Когда нужна максимальная совместимость с серверами
Выводы
WAR — это стандартный контейнер для Java веб-приложений, обеспечивающий стандартизированное, безопасное развёртывание на серверах приложений. Хотя Spring Boot сместил WAR на второй план, понимание его структуры и назначения остаётся важным для работы с корпоративной Java-архитектурой.