Che cos'è il formato di file WAR?
.war (Java Web Archive) è un formato di archiviazione simile a un file JAR, basato sul contenitore standard ZIP. I file .war contengono applicazioni web Java e componenti lato server che possono essere eseguiti su un servlet container come Apache Tomcat o Jetty. Oltre ai file .class compilati, l'archivio può memorizzare risorse aggiuntive da eseguire sul server, incluse pagine .jsp, HTML statico e CSS. La directory obbligatoria WEB-INF/ contiene il descrittore di distribuzione web.xml e una cartella lib/ per i file .jar delle dipendenze incluse.
Utilizzo dei file .war
Un file .war, come qualsiasi archivio, può essere decompresso per visualizzare il codice sorgente e altre risorse - rinominalo in .zip e aprilo con qualsiasi strumento di archiviazione. L'ambiente di esecuzione, tuttavia, richiede che l'applicazione rimanga nel formato .war per la distribuzione; il servlet container gestisce il caricamento delle classi e l'instradamento delle richieste. I moderni progetti Spring Boot spesso vengono distribuiti come fat-JAR autonomi invece di un .war, ma la distribuzione WAR rimane lo standard sui server Jakarta EE come WildFly e WebSphere. .war è la controparte per applicazioni web degli archivi .EAR, che raggruppano intere applicazioni enterprise.
Sicurezza e incolumità
RISCHIO: MEDIUMUn WAR contiene codice eseguibile lato server (servlet compilate e librerie JAR incluse), quindi distribuirne uno esegue quel codice sul server con i privilegi del server stesso. Distribuisci solo WAR provenienti da fonti affidabili; un WAR malevolo o compromesso può ospitare una web shell o dipendenze vulnerabili. L'ispezione (rinominando in .zip) è sicura; la distribuzione è il passaggio rischioso. Mantieni aggiornati il servlet container e le librerie incluse nel WAR (rischio supply-chain, ad es. librerie di logging vulnerabili).
Dettagli del formato
in sintesi- Archivio web Konqueror - Konqueror di KDE poteva salvare una pagina web (e i relativi asset) come archivio .war; un uso legacy raro di KDE, non il formato dominante.
- WAR (audio/campione) e dati di gioco - Alcuni strumenti legacy utilizzavano .war per campioni audio grezzi o archivi di asset di gioco (ad es. alcuni motori grafici); non correlato al formato Java.
Programmi che aprono file WAR
Dettagli tecnici
specifiche approfondite| Formato contenitore | Archivio ZIP; magic bytes PK (0x50 0x4B 0x03 0x04) all'offset 0 - identico allo ZIP standard |
| Metodo di compressione | DEFLATE per voce (default ZIP); le singole voci possono essere memorizzate (STORED) non compresse |
| Tipo MIME | application/java-archive |
| Ordine dei byte | Little-endian (ereditato dalle specifiche ZIP) |
| Struttura directory richiesta | Deve includere la cartella WEB-INF/ contenente il descrittore web.xml, e le sottodirectory classes/ e lib/ |
| Codifica | Binario |
| Dimensione tipica del file | 1 MB - 300 MB; varia in base al numero di JAR delle dipendenze e degli asset statici inclusi |
| Integrità / firma | CRC-32 per voce; firma del codice JAR opzionale tramite file di firma .SF / .RSA in META-INF/ |
| Voci massime in archivio | 65.535 (ZIP standard); l'estensione ZIP64 rimuove questo limite |
| Target di distribuzione | Servlet container e application server Jakarta EE: Apache Tomcat, Jetty, WildFly, GlassFish, WebSphere |
| Dichiarazione versione | Versione specifica Servlet/Jakarta EE dichiarata nell'elemento <web-app> di WEB-INF/web.xml; opzionale META-INF/MANIFEST.MF |
| Isolamento delle classi | Ogni WAR distribuito riceve un classloader isolato; previene conflitti di versione delle librerie tra applicazioni co-distribuite |
| Gerarchia nel packaging Java EE | WAR è il livello dell'applicazione web; JAR contiene librerie/app; EAR (Enterprise Archive) racchiude WAR e JAR EJB in un'unica unità distribuibile |
| Supporto piattaforma | Cross-platform; funziona su qualsiasi SO con una JVM e un servlet container compatibile (Windows, Linux, macOS) |
| Hot deployment | La maggior parte dei servlet container supporta la distribuzione o la sostituzione di un file WAR senza il riavvio completo del server (drop-in deployment) |
| Rilasciato | 1999 (Java Servlet 2.2 / J2EE 1.2) |
| Ultima versione | Tracks Jakarta EE / Servlet spec (Jakarta Servlet 6.0, 2022); WAR layout itself is stable |
| Standard aperto | Sì · royalty-free |
| Specifica | jakarta.ee |
Conversioni WAR
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file WAR.