Tomcat, Web Server o Application Server?

di: Pasquale Congiustì     16 Marzo 2009

Quando sviluppiamo per il Web, con Java, abbiamo a che fare con un Web server e nella maggior parte dei casi si tratta di Tomcat, che rappresenta quasi uno standard.

Non è infrequente commettere l'errore di definire Tomcat come Application Server, visto che la maggior parte delle volte i suoi servizi sono sufficienti a definire l'ambiente di esecuzione di una applicazione Web (sia essa Internet che Intranet). Vedremo in questo articolo il motivo per cui la definizione di Application Server è un errore, e cercheremo di definire le esigenze di sviluppo di un'applicazione, cioè quando realmente c'è la necessità di utilizzare un vero Application Server e non Tomcat.

Chi ha letto la guida su Java 2 Enterprise Edition ha visto, nel capitolo dedicato agli Application Server, che di fatto questi server rappresentano un modo di fornire dei servizi a più alto livello di un semplice Web Server.

Parlando a livello insiemistico, potremmo definire un Web Server come un sottoinsieme di funzionalità di un Application Server. Il set di tecnologie fornito da un AS è molto ampio e lo scopo di tante tecnologie è quello di fornire allo sviluppatore una serie di servizi (middleware) che facilitino compiti tipici di una applicazione enterprise, ossia un'applicazione che ha una serie di sorgenti informative che vanno al di là della semplice base di dati.

Tomcat non è un servizio fully compliant con la specifica JEE, cioè con tutte le tecnologie di cui sopra. Quindi Tomcat non può essere considerato un Application Server: ciò non significa che non sia un servizio valido, anzi, la maggior parte dello sviluppo trae beneficio da un sistema "più leggero". È vero anche che Tomcat va al di là della semplice definizione di Web Server, in quanto ha alcune caratteristiche Enterprise che lo fanno appartire come un AS mancato.

Elenchiamo alcune delle più comuni tecnologie enterprise e vediamo quali sono presenti nell'implementazione di Tomcat.

  • JNDI*;
  • JAAS;
  • SOA*;
  • JSP/servlet/JSF;
  • JDBC;
  • Cluster;
  • Datasource*.

Questo set di tecnologie consente, di fatto, di avere un ambiente di esecuzione abbastanza completo, tipico delle applicazioni Web pure, con una semplice sorgente dati relazionale (un DBMS) e la gestione dei pool di connessione attraverso l'uso di datasource (anche se la loro funzionalità pecca abbastanza).

I servizi segnati con l'asterisco sono dei tipici servizi Enterprise (JEE) che funzionano con delle limitazioni relative al fatto che il servizio non è compatibile al 100% con la specifica JEE di Sun. Una cosa che potrebbe accadere è che il porting di quei servizi su un AS compatibile diano problemi.

Per quanto riguarda SOA, cioè la possibilità di creare ed utilizzare Web service, Tomcat lo effettua a livello Web tramite l'utilizzo di servizi di terze parti (il progetto Axis). Un application server, invece, lavora a livello enterprise, cioè utilizzando servizi più efficienti (il pooling di stateless session beans) per fornire un servizio più rapido o comunque più affidabile.

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto