Il presente elaborato analizza in modo sistematico il funzionamento interno di Apache Tomcat, con particolare attenzione alla struttura architetturale del container e alle problematiche legate al class loading. L’obiettivo è comprendere in profondità i meccanismi che governano l’avvio del server, la gestione dei container interni (Server, Service, Engine, Host, Context) e le fasi di deploy e inizializzazione delle applicazioni web. La ricerca si è sviluppata attraverso l’analisi del codice sorgente di Tomcat 11, seguendo passo dopo passo il flusso di esecuzione a partire dal bootstrap del server fino alla disponibilità delle applicazioni. In particolare, sono stati studiati il ciclo di vita dei componenti (Lifecycle), il ruolo dei listener di configurazione (HostConfig, ContextConfig), il processo di parsing dei file di configurazione (server.xml, web.xml, web-fragment.xml) e la gestione delle annotazioni introdotte con la specifica Servlet 3.0. L’analisi si concentra inoltre sui meccanismi di caricamento delle classi, esaminando come Tomcat gestisce l’isolamento tra le applicazioni e la risoluzione delle dipendenze. Vengono discusse le principali problematiche connesse alla riusabilità dei class loader, al riavvio delle webapp e alla prevenzione dei memory leak. L’analisi mette in evidenza come Tomcat implementi un’architettura modulare e stratificata, in cui ogni componente del container è responsabile di una parte ben definita del ciclo di vita dell’applicazione. Tale struttura consente un’elevata estensibilità ma, al tempo stesso, introduce complessità nella gestione delle risorse e nel caricamento dinamico delle classi. In conclusione, la tesi offre una visione d’insieme del funzionamento interno di Tomcat, mettendo in luce i meccanismi che garantiscono modularità e isolamento, ma anche le complessità che ne derivano nella gestione del caricamento delle classi.
Analisi del funzionamento interno di Apache Tomcat: indagine sulle criticità di class loading e sugli aspetti architetturali del container
TOMEI, MARCO
2024/2025
Abstract
Il presente elaborato analizza in modo sistematico il funzionamento interno di Apache Tomcat, con particolare attenzione alla struttura architetturale del container e alle problematiche legate al class loading. L’obiettivo è comprendere in profondità i meccanismi che governano l’avvio del server, la gestione dei container interni (Server, Service, Engine, Host, Context) e le fasi di deploy e inizializzazione delle applicazioni web. La ricerca si è sviluppata attraverso l’analisi del codice sorgente di Tomcat 11, seguendo passo dopo passo il flusso di esecuzione a partire dal bootstrap del server fino alla disponibilità delle applicazioni. In particolare, sono stati studiati il ciclo di vita dei componenti (Lifecycle), il ruolo dei listener di configurazione (HostConfig, ContextConfig), il processo di parsing dei file di configurazione (server.xml, web.xml, web-fragment.xml) e la gestione delle annotazioni introdotte con la specifica Servlet 3.0. L’analisi si concentra inoltre sui meccanismi di caricamento delle classi, esaminando come Tomcat gestisce l’isolamento tra le applicazioni e la risoluzione delle dipendenze. Vengono discusse le principali problematiche connesse alla riusabilità dei class loader, al riavvio delle webapp e alla prevenzione dei memory leak. L’analisi mette in evidenza come Tomcat implementi un’architettura modulare e stratificata, in cui ogni componente del container è responsabile di una parte ben definita del ciclo di vita dell’applicazione. Tale struttura consente un’elevata estensibilità ma, al tempo stesso, introduce complessità nella gestione delle risorse e nel caricamento dinamico delle classi. In conclusione, la tesi offre una visione d’insieme del funzionamento interno di Tomcat, mettendo in luce i meccanismi che garantiscono modularità e isolamento, ma anche le complessità che ne derivano nella gestione del caricamento delle classi.| File | Dimensione | Formato | |
|---|---|---|---|
|
Tomei_Marco.pdf
accesso aperto
Dimensione
1.63 MB
Formato
Adobe PDF
|
1.63 MB | Adobe PDF | Visualizza/Apri |
The text of this website © Università degli studi di Padova. Full Text are published under a non-exclusive license. Metadata are under a CC0 License
https://hdl.handle.net/20.500.12608/97857