Wat is het WAR-bestandsformaat?
.war (Java Web Archive) is een archiefformaat vergelijkbaar met een JAR-bestand, gebouwd op de standaard ZIP-container. .war-bestanden bevatten Java-webapplicaties en server-side componenten die kunnen worden geïmplementeerd en uitgevoerd op een servlet-container zoals Apache Tomcat of Jetty. Naast gecompileerde .class-bestanden kan het archief extra bronnen bevatten die op de server worden uitgevoerd, waaronder .jsp-pagina's, statische HTML en CSS. De verplichte map WEB-INF/ bevat de web.xml deployment descriptor en een lib/-map voor gebundelde afhankelijkheids-.jar-bestanden.
Het gebruik van .war-bestanden
Een .war-bestand kan, net als elk archief, worden uitgepakt om de broncode en andere bronnen te bekijken - hernoem het naar .zip en open het met een willekeurig archiefprogramma. De uitvoeringsomgeving vereist echter dat de applicatie in .war-formaat blijft voor implementatie; de servlet-container regelt het laden van klassen en de routering van verzoeken. Moderne Spring Boot-projecten leveren vaak een zelfstandige fat-JAR in plaats van een .war, maar WAR-implementatie blijft de standaard op Jakarta EE-servers zoals WildFly en WebSphere. .war is de webapplicatie-tegenhanger van .EAR-archieven, die volledige bedrijfsapplicaties bundelen.
Beveiliging & veiligheid
RISICO: MEDIUMEen WAR bevat uitvoerbare server-side code (gecompileerde servlets en gebundelde JAR-bibliotheken), dus het implementeren ervan voert die code uit op je server met de rechten van de server. Implementeer alleen WAR's van vertrouwde bronnen; een kwaadaardige of gecompromitteerde WAR kan een web-shell of kwetsbare afhankelijkheden bevatten. Inspecteren (hernoemen naar .zip) is veilig; implementeren is de risicovolle stap. Houd je servlet-container en de gebundelde bibliotheken van de WAR gepatcht (supply-chain risico, bijv. kwetsbare logging-bibliotheken).
Formaatdetails
in een notendop- Konqueror webarchief - KDE's Konqueror kon een webpagina (en bijbehorende bestanden) opslaan als een .war-archief; een zeldzaam, verouderd KDE-gebruik, niet het dominante formaat.
- WAR (audio/sample) en game-data - Enkele oudere tools gebruikten .war voor ruwe audio-samples of archieven met game-assets (bijv. sommige engines); niet gerelateerd aan het Java-formaat.
Programma's die WAR-bestanden openen
Technische details
diepe specificaties| Containerformaat | ZIP-archief; magic bytes PK (0x50 0x4B 0x03 0x04) op offset 0 - identiek aan standaard ZIP |
| Compressiemethode | DEFLATE per item (ZIP-standaard); individuele items kunnen ongecomprimeerd als STORED worden opgeslagen |
| MIME-type | application/java-archive |
| Byte-volgorde | Little-endian (geërfd van de ZIP-specificatie) |
| Vereiste mappenstructuur | Moet de map WEB-INF/ bevatten met de web.xml deployment descriptor, en de submappen classes/ en lib/ |
| Codering | Binair |
| Typische bestandsgrootte | 1 MB - 300 MB; varieert afhankelijk van het aantal gebundelde afhankelijkheids-JAR's en statische bestanden |
| Integriteit / ondertekening | CRC-32 per item; optionele JAR-codeondertekening via META-INF/ .SF / .RSA-handtekeningbestanden |
| Max archief-items | 65.535 (standaard ZIP); ZIP64-extensie heft deze limiet op |
| Implementatiedoel | Servlet-containers en Jakarta EE-applicatieservers: Apache Tomcat, Jetty, WildFly, GlassFish, WebSphere |
| Versieverklaring | Servlet/Jakarta EE-specificatieversie vermeld in WEB-INF/web.xml <web-app> element; optioneel META-INF/MANIFEST.MF |
| Klasse-isolatie | Elke geïmplementeerde WAR krijgt een geïsoleerde classloader; voorkomt bibliotheekversie-conflicten tussen gezamenlijk geïmplementeerde applicaties |
| Hiërarchie in Java EE-verpakking | WAR is de webapplicatielaag; JAR bevat bibliotheken/apps; EAR (Enterprise Archive) verpakt WAR's en EJB JAR's in één implementeerbare eenheid |
| Platformondersteuning | Platformonafhankelijk; draait op elk besturingssysteem met een JVM en compatibele servlet-container (Windows, Linux, macOS) |
| Hot deployment | De meeste servlet-containers ondersteunen het implementeren of vervangen van een WAR-bestand zonder volledige herstart van de server (drop-in deployment) |
| Uitgebracht | 1999 (Java Servlet 2.2 / J2EE 1.2) |
| Laatste versie | Tracks Jakarta EE / Servlet spec (Jakarta Servlet 6.0, 2022); WAR layout itself is stable |
| Open standaard | Ja · royaltyvrij |
| Specificatie | jakarta.ee |
WAR conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over WAR-bestanden.