В разработке программного обеспечения файл WAR ( ресурс веб - приложения [1] или AR- архив веб -приложения [ 2] ) — это файл , используемый для распространения коллекции JAR -файлов, страниц JavaServer , Java-сервлетов , классов Java , XML. файлы, библиотеки тегов, статические веб-страницы ( HTML и связанные файлы) и другие ресурсы, которые вместе составляют веб-приложение .
Файл WAR может быть подписан цифровой подписью так же, как файл JAR , чтобы позволить другим определить, откуда взялся исходный код.
Внутри файла WAR есть специальные файлы и каталоги:
Если предположить, что в производственных средах исправление не предлагается без достаточного тестирования перед развертыванием, файл WAR имеет явное преимущество, когда файлы свойств используются для идентификации переменных, специфичных для среды. Например, сервер LDAP в тестовой среде может иметь вид ldaps://testauth.example.com:636
. Сервер LDAP в производственной среде — это ldaps://auth.example.com:636
. Внешний файл свойств будет определять ссылку примерно так:
LINKED_PAGE=ldaps://testauth.example.com:636
Исходный код считывает файл свойств, чтобы определить целевой сервер LDAP. Таким образом, разработчики могут быть уверены, что протестированный и проверенный файл WAR точно такой же, как тот, который передается в производство.
Некоторые считают, что веб-развертывание с использованием файлов WAR невыгодно, когда для динамических сред требуются незначительные изменения в исходном коде. Каждое изменение исходного кода должно быть переупаковано и развернуто в разработке. [3] Это не требует остановки веб-сервера, если он настроен для развертывания во время выполнения. [4]
Следующий пример файла web.xml демонстрирует объявление и ассоциацию сервлета :
<?xml version="1.0"coding="UTF-8"?> <!DOCTYPE веб-приложение 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> Ссылка на ресурс для фабрики экземпляров javax.mail.Session , которые можно использовать для отправки сообщений электронной почты , предварительно настроенных для подключения к соответствующему SMTP - серверу. </description> <res-ref-name> mail/Session </res-ref-name> <res-type> javax.mail.Session </res-type> <res-auth> Контейнер </res-auth> </resource-ref> </ веб-приложение>
Каталог /WEB-INF/classes
находится в пути к классам ClassLoader . (Путь к классам представляет собой список мест, из которых файлы могут быть загружены и выполнены JVM.) Каталог содержит классы, связанные с самим веб-приложением..class
/WEB-INF/classes
Любые файлы JAR, помещенные в /WEB-INF/lib
каталог, также будут помещены в путь к классам ClassLoader.