WAR (сокр. от или ) — формат файла, описывающий, как полное веб-приложение упаковывается в соответствии со спецификацией Java-сервлетов в файл в формате JAR или ZIPDanny Coward, Yutaka Yoshida: Java™ Servlet Specification, Version 2.4. 24. November 2003. Такие файлы имеют расширение «.war».

Преимущества WAR-файлов: лёгкость разработки, тестирования и развёртывания версию развёрнутого приложения легко идентифицировать Все J2EE-контейнеры поддерживают WAR-файлы

Структура Следующий пример показывает структуру Web-Архива.

/index.html /guestbook.jsp /images/logo.png /WEB-INF/web.xml /WEB-INF/classes/org/wikipedia/Util.class /WEB-INF/classes/org/wikipedia/MainServlet.class /WEB-INF/lib/util.jar /META-INF/MANIFEST.MF

В каталоге «WEB-INF» находится так называемый дескриптор развёртывания (Deployment Descriptor) по имени «web.xml», определяющий все сервлеты и другие свойства Web-приложения. Если приложение содержит только JSP-файлы, этот файл не строго обязателен.

Пример дескриптора развёртывания web.xml, демонстрирующий спецификацию сервлетов: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>mypackage.HelloServlet</servlet-class> </servlet>

<servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping>

<resource-ref> <description> Resource reference to a factory for javax.mail.Session instances that may be used for sending electronic mail messages, preconfigured to connect to the appropriate SMTP server. </description> <res-ref-name>mail/Session</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>

Каталог /WEB-INF/classes находится в classpath ClassLoader. Эти java-файлы с расширением .class будут загружены, когда веб-приложение загрузится и начнёт выполняться. Любые файлы JAR, находящиеся в каталоге /WEB-INF/lib, также будут помещены в classpath.

Применение Все J2EE-контейнеры поддерживают WAR-файлы.

Чтобы веб-контейнер (веб-сервер) смог прочитать дескриптор развёртывания и начал перенаправлять запросы на данное приложение, необходимо развернуть (deploy) WAR-файл в контейнер. Одним из вариантов выполнения развёртывания является копирование WAR-файла в autodeploy-каталог веб-контейнера.

WAR может быть подписан электронной цифровой подписью так же, как и JAR-файл, чтобы подтвердить аутентичность кода.

Приложения, установленные из WAR-файлов на один сервер, не могут пользоваться ресурсами друг друга, их выполнение изолировано. Однако они могут пользоваться общими библиотеками сервера (например, у Tomcat они расположены в ${catalina.base}/lib), но такие библиотеки с помощью war-файла установлены быть не могут.

Примечания

См. также EAR JAR EXE

Категория:Java Enterprise Edition Категория:Форматы архивов