Cos'è Tomcat? Il contenitore servlet Java originale

Apache Tomcat è un contenitore servlet Java open source di lunga durata che implementa diverse specifiche aziendali Java principali, ovvero Java Servlet, JavaServer Pages (JSP) e API WebSockets.

Un progetto di Apache Software Foundation, Tomcat è stato rilasciato per la prima volta nel 1998, appena quattro anni dopo lo stesso Java. Tomcat è iniziato come implementazione di riferimento per la prima API del servlet Java e la specifica JSP. Sebbene non sia più l'implementazione di riferimento per nessuna di queste tecnologie, Tomcat rimane il server Java più utilizzato, vantando un motore di base ben collaudato con una buona estensibilità.

In questa breve introduzione, imparerai perché molti negozi di software scelgono Tomcat per l'esecuzione di app Web Java. Avrai una panoramica di Tomcat e di come viene utilizzato, nonché le istruzioni di installazione per la versione più recente al momento della stesura di questo documento.

Tomcat e Java Servlet API

Tomcat 9 supporta la specifica Servlet 4.0 e richiede JDK 8 o superiore. Tomcat 8.5 supporta diverse funzionalità più recenti come HTTP / 2, ma rimane un contenitore Servlet 3.

Che tipo di server è Tomcat?

L'ecosistema Java supporta diversi tipi di server delle applicazioni, quindi chiariamoli e vediamo dove si inserisce Tomcat:

  • Un servlet container è un'implementazione della specifica Java Servlet, utilizzata principalmente per ospitare servlet Java.
  • Un server web è un server progettato per servire file dal sistema locale, come Apache.
  • Un server di applicazioni aziendali Java è un'implementazione completa della specifica Java EE (ora Jakarta EE).

In sostanza, Tomcat è un servlet e un contenitore JSP. Un servlet Java incapsula il codice e la logica aziendale e definisce il modo in cui devono essere gestite le richieste e le risposte in un server Java. JSP è una tecnologia di rendering della vista lato server. In qualità di sviluppatore, scrivi il servlet o la pagina JSP, quindi lascia che Tomcat gestisca il routing.

Tomcat contiene anche il motore Coyote, che è un server web. Grazie a Coyote, è possibile estendere Tomcat per includere una varietà di specifiche e funzionalità Java enterprise, inclusa Java Persistence API (JPA). Tomcat ha anche una versione estesa, chiamata TomEE, che include più funzionalità aziendali. Presenterò brevemente TomEE più avanti in questo articolo.

Cominciamo con uno sguardo all'utilizzo di Tomcat per ospitare servlet e JSP.

Scarica e installa Tomcat

Essendo un canuto antico del mondo del software, sono disponibili numerose versioni di Tomcat. Le informazioni sulle differenze di versione sono disponibili sulla home page di Tomcat. Di solito puoi semplicemente scegliere l'ultima versione stabile.

Per i nostri scopi, scarica l'ultima versione di Tomcat, che attualmente è Tomcat 9. Puoi scegliere di scaricare Tomcat come archivio ( .zipo tar.gz) o come servizio installato. La scelta migliore dipende da te, a meno che, ovviamente, non stai eseguendo su Windows, nel qual caso andrai per l'archivio. Useremo l'archivio per questo articolo.

Installazione di Windows per Tomcat

Se utilizzi Windows e desideri utilizzare il programma di installazione, scarica semplicemente il file .exe ed eseguilo. Tomcat si installerà come servizio con valori predefiniti ragionevoli. Ti informerà quindi su dove si trova l'installazione e potrai procedere come se avessi decompresso l'archivio lì.

Passaggio 1. Installazione dalla riga di comando

Vai alla riga di comando e digita gunzip apache-tomcat-9.0.19.tar.gzseguito da tar -xf apache-tomcat-9.0.19.tar. Questo crea le seguenti directory:

  • / bin contiene gli script per l'esecuzione di Tomcat.
  • / webapps è la posizione in cui distribuirai le tue app.
  • / logs è dove Tomcat emette i suoi log. Nota che i log di Tomcat vengono inseriti /logs/catalina.outper impostazione predefinita. È possibile utilizzare questo file per eseguire il debug dei problemi insieme ai file di registro specifici dell'app.
  • / lib è dove Tomcat cerca i JAR. Qui è dove archiverai pacchetti aggiuntivi non inclusi con Tomcat, come JPA.
  • / conf è l'XML di configurazione per Tomcat, in cui è possibile eseguire operazioni come l'aggiunta di utenti e ruoli per Tomcat.

Passaggio 2. Avvia Tomcat

Se hai installato Tomcat come servizio, è già in esecuzione. Altrimenti, vai avanti e avvialo inserendo ./catalina.sh startnella riga di comando. (Digita ./catalina.shsenza argomenti per vedere tutti i comandi disponibili). Ora dovresti essere in grado di accedere alla schermata di benvenuto di Tomcat in un browser.

Matthew Tyson

Distribuzione di applicazioni in Tomcat

La webappsdirectory di Tomcat è dove distribuisci un'applicazione. Puoi rilasciare un .warfile lì e Tomcat lo eseguirà. Un file WAR è il pacchetto standard per una risorsa di un'applicazione Web: un file JAR con alcuni file aggiuntivi che indicano al contenitore (in questo caso Tomcat) come eseguirlo.

Oltre alla confezione standard, ci sono tre modi aggiuntivi per distribuire il contenuto in Tomcat.

Distribuzione esplosa

Un'app web "esplosa" è un'applicazione che non è compressa in un file WAR, il che significa che contiene ancora tutti gli elementi disposti nelle directory e nei file. L'archivio Tomcat che hai decompresso è stato fornito con diversi esempi distribuiti in questo modo, che troverai nella /webapps/examplesdirectory. Il vantaggio di una distribuzione esplosa è che puoi guardare i file lì senza preoccuparti della compressione.

Se accedi a //localhost:8080/examples/, troverai un elenco di collegamenti. Questa pagina viene visualizzata da Tomcat dal /webapps/examples/index.htmlfile. Tomcat serve un file HTML dal file system, che è un'istanza del motore Coyote di Tomcat che funge da server web.

Sei libero di esplorare gli esempi presentati: ti danno una buona panoramica delle capacità di Tomcat per servire servlet, JSP e WebSocket.

Tomcat include anche un'app di gestione per impostazione predefinita, che si trova sotto il /managerpercorso. Tra le altre cose, questa app ti consente di avviare, arrestare e ridistribuire app da una console web.

Fornire contenuti statici

È possibile servire file dal file system o inoltrare da Tomcat a un altro server HTTP come Apache. Un'altra configurazione comune è mettere un file server come Apache o Nginx davanti a Tomcat, quindi inoltrare le richieste API a Tomcat. In questi casi, la libreria mod_JK viene utilizzata per configurare Tomcat e Apache (o anche un altro server web come IIS) per comunicare.

Per migliorare le prestazioni, principalmente nella fornitura di contenuto statico, Tomcat offre anche wrapper nativi per Windows e Linux. Questo è noto come APR Tomcat e ulteriori informazioni sono disponibili qui. Questi non sono necessari per i casi d'uso tipici, ma utili.

Tomcat incorporato

Per molto tempo, Jetty è stato l'unico server in grado di funzionare come server incorporato. La situazione è cambiata e ora Tomcat può anche essere integrato. L'idea nell'utilizzo di un server incorporato è che invece del server contenente i file dell'applicazione, come hai visto finora, hai un'applicazione con una classe principale (cioè un'app Java standalone), che richiama le funzionalità del server da all'interno della sua base di codice. Nel complesso, questo offre un modello di sviluppo più semplice e portatile ed è rapidamente diventato la norma. Spring Boot, ad esempio, utilizza un'istanza Tomcat incorporata in esecuzione in modalità dev.

L'esecuzione di un server incorporato può garantire semplicità in termini di operazioni, poiché ora hai a che fare con un singolo componente (l'app) invece di occuparti sia dell'app che della distribuzione del server. D'altra parte, la configurazione in cui Tomcat viene eseguito come host indipendente è ancora molto comune.

TomEE

È possibile utilizzare più funzionalità Java EE standard (o Jakarta EE) con Tomcat aggiungendo tali librerie a Tomcat stesso o alle dipendenze dell'applicazione. Un'altra opzione è il server TomEE. TomEE è lo stesso motore Tomcat con supporto aziendale Java aggiuntivo, comprese le famose API JPA e CDI (Contexts and Dependency Injection). Le specifiche di TomEE si basano sul profilo web Java EE, quindi ti dà più di Tomcat ma non è un vero e proprio app server Java EE come WildFly o Glassfish.

Alta disponibilità e clustering

Tomcat supporta l'alta disponibilità e il clustering. L'alta disponibilità è essenzialmente la capacità di eseguire il failover su un'altra istanza del server e ricreare la sessione come se nulla fosse andato storto. Il clustering è la capacità di creare più versioni dello stesso server per gestire un volume elevato di traffico.

Conclusione

Tomcat rimane attivamente sviluppato, al passo con il cambiamento e fornendo una piattaforma solida e affidabile per la distribuzione di app web. Sia la sua continua popolarità che la scelta come piattaforma Java predefinita per molti sistemi PaaS testimoniano il suo continuo successo.

Questa storia, "Che cos'è Tomcat? Il contenitore servlet Java originale" è stata originariamente pubblicata da JavaWorld.