Co to jest format pliku WAR?
.war (Java Web Archive) to format archiwum podobny do pliku JAR, zbudowany na standardowym kontenerze ZIP. Pliki .war zawierają aplikacje internetowe Java i komponenty po stronie serwera, które można wdrażać i uruchamiać w kontenerze serwletów, takim jak Apache Tomcat lub Jetty. Oprócz skompilowanych plików .class, archiwum może przechowywać dodatkowe zasoby uruchamiane na serwerze, w tym strony .jsp, statyczny HTML i CSS. Obowiązkowy katalog WEB-INF/ zawiera deskryptor wdrożenia web.xml oraz folder lib/ dla dołączonych plików zależnych .jar.
Korzystanie z plików .war
Plik .war, podobnie jak każde archiwum, można rozpakować, aby przejrzeć kod źródłowy i inne zasoby - wystarczy zmienić jego nazwę na .zip i otworzyć dowolnym narzędziem do archiwizacji. Środowisko wykonawcze wymaga jednak, aby aplikacja pozostała w formacie .war do celów wdrożeniowych; kontener serwletów zajmuje się ładowaniem klas i rutowaniem żądań. Nowoczesne projekty Spring Boot często dostarczają samodzielny „fat-JAR” zamiast .war, ale wdrażanie WAR pozostaje standardem na serwerach Jakarta EE, takich jak WildFly i WebSphere. .war jest odpowiednikiem archiwów .EAR dla aplikacji internetowych, które grupują pełne aplikacje korporacyjne.
Bezpieczeństwo
RYZYKO: MEDIUMPlik WAR zawiera wykonywalny kod po stronie serwera (skompilowane serwlety i dołączone biblioteki JAR), więc jego wdrożenie powoduje uruchomienie tego kodu na serwerze z uprawnieniami serwera. Wdrażaj pliki WAR tylko z zaufanych źródeł; złośliwy lub naruszony plik WAR może zawierać powłokę internetową (web shell) lub podatne zależności. Inspekcja (zmiana nazwy na .zip) jest bezpieczna; wdrożenie jest krokiem ryzykownym. Dbaj o aktualizację kontenera serwletów i bibliotek dołączonych do WAR (ryzyko łańcucha dostaw, np. podatne biblioteki logowania).
Szczegóły formatu
w pigułce- Archiwum internetowe Konqueror - Przeglądarka Konqueror z projektu KDE mogła zapisywać strony internetowe (wraz z zasobami) jako archiwum .war; rzadkie, przestarzałe zastosowanie w KDE, niezwiązane z głównym formatem.
- WAR (audio/sample) i dane gier - Kilka starszych narzędzi używało rozszerzenia .war dla surowych próbek audio lub archiwów zasobów gier (np. niektóre silniki); nie ma to związku z formatem Java.
Programy otwierające pliki WAR
Szczegóły techniczne
specyfikacja| Format kontenera | Archiwum ZIP; magiczne bajty PK (0x50 0x4B 0x03 0x04) pod offsetem 0 - identyczne jak w standardowym ZIP |
| Metoda kompresji | DEFLATE dla każdego wpisu (domyślna dla ZIP); poszczególne wpisy mogą być przechowywane bez kompresji (STORED) |
| Typ MIME | application/java-archive |
| Kolejność bajtów | Little-endian (odziedziczona ze specyfikacji ZIP) |
| Wymagana struktura katalogów | Musi zawierać folder WEB-INF/ z deskryptorem wdrożenia web.xml oraz podkatalogi classes/ i lib/ |
| Kodowanie | Binarne |
| Typowy rozmiar pliku | 1 MB - 300 MB; różni się w zależności od liczby dołączonych bibliotek JAR i zasobów statycznych |
| Integralność / podpisywanie | CRC-32 dla każdego wpisu; opcjonalne podpisywanie kodu JAR za pomocą plików sygnatur .SF / .RSA w META-INF/ |
| Maksymalna liczba wpisów | 65 535 (standardowy ZIP); rozszerzenie ZIP64 znosi ten limit |
| Docelowe środowisko wdrożeniowe | Kontenery serwletów i serwery aplikacji Jakarta EE: Apache Tomcat, Jetty, WildFly, GlassFish, WebSphere |
| Deklaracja wersji | Wersja specyfikacji Servlet/Jakarta EE określona w elemencie <web-app> w WEB-INF/web.xml; opcjonalnie META-INF/MANIFEST.MF |
| Izolacja klas | Każdy wdrożony WAR otrzymuje odizolowany moduł ładujący klasy (classloader); zapobiega to konfliktom wersji bibliotek między współistniejącymi aplikacjami |
| Hierarchia w pakietowaniu Java EE | WAR to warstwa aplikacji internetowej; JAR przechowuje biblioteki/aplikacje; EAR (Enterprise Archive) opakowuje pliki WAR i EJB JAR w jedną jednostkę wdrożeniową |
| Obsługa platform | Wieloplatformowy; działa na każdym systemie operacyjnym z JVM i kompatybilnym kontenerem serwletów (Windows, Linux, macOS) |
| Wdrażanie na gorąco (Hot deployment) | Większość kontenerów serwletów obsługuje wdrażanie lub wymianę pliku WAR bez pełnego restartu serwera (drop-in deployment) |
| Wydano | 1999 (Java Servlet 2.2 / J2EE 1.2) |
| Najnowsza wersja | Tracks Jakarta EE / Servlet spec (Jakarta Servlet 6.0, 2022); WAR layout itself is stable |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | jakarta.ee |
Konwersje WAR
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki WAR.