Perimetro della materia
La scheda "Nozioni fondamentali su application server e altre componenti middleware" per il concorso INPS 499 (Assistente Informatico) copre i server di applicazione, i container Java EE/Jakarta EE, le architetture middleware, i meccanismi di bilanciamento e clustering, la gestione delle risorse, la sicurezza e il monitoraggio a livello middleware. Sono inclusi i concetti di deployment (WAR, EAR), connection pooling, message broker (JMS) e containerizzazione (Docker, Kubernetes). Non rientrano qui reti e sistemi Linux/Windows, database relazionali, sicurezza informatica e GDPR, codice dell'amministrazione digitale: per quei temi si rimanda alle rispettive schede.
Nuclei tematici ricorrenti
Application server vs web server
Il web server (es. Apache HTTP, Nginx) gestisce richieste HTTP e contenuti statici; l'application server (es. Apache Tomcat, JBoss/WildFly, WebLogic, WebSphere) fornisce il runtime per l'esecuzione della logica applicativa, gestisce transazioni, sicurezza e accesso alle risorse.
Container Java EE / Jakarta EE
Principali implementazioni: Apache Tomcat (servlet container, non full stack), JBoss/WildFly e WebLogic (stack Java EE completo con EJB, JTA, JMS), WebSphere (usato in contesti enterprise ad alta disponibilità).
Architetture middleware e message broker
Il Message Oriented Middleware (MOM) disaccoppia mittente e destinatario. Standard JMS, implementazioni come ActiveMQ e RabbitMQ. Distinzione tra coda (point-to-point, un solo consumatore) e topic (publish/subscribe, più sottoscrittori).
Connection pooling e gestione delle risorse
Il connection pool JDBC riutilizza connessioni al database già aperte, evitando il costo di apertura/chiusura ad ogni richiesta. Parametri tipici: dimensione minima e massima del pool, timeout di attesa.
Load balancing e clustering
Il load balancing distribuisce le richieste tra più istanze (es. con HAProxy o Nginx); il clustering mette in comunicazione più application server per garantire continuità di servizio in caso di guasto (failover). Sono concetti distinti e complementari.
Sessioni applicative e replica dello stato
Una sessione stateful mantiene informazioni tra richieste successive (tipico di servlet ed EJB); una interazione stateless no (tipico delle API REST). In cluster, lo stato di sessione va replicato tra i nodi o salvato in uno store condiviso per non perderlo in caso di failover.
Deploy di applicazioni (WAR/EAR)
Il WAR (Web Application Archive) impacchetta un'applicazione web (servlet, JSP, risorse); l'EAR (Enterprise Archive) raggruppa più moduli in un'unica applicazione enterprise. Il deployment può avvenire a caldo (hot deployment), senza fermare il server.
Sicurezza a livello middleware
Autenticazione (form, certificato client) e autorizzazione basata su ruoli. Terminazione SSL/TLS e gestione dei certificati. Integrazione con directory centralizzate (LDAP/Active Directory).
Monitoraggio e log
Strumenti tipici: JMX per esporre metriche del server, log applicativi strutturati. Le metriche chiave riguardano thread pool, tempi di risposta e utilizzo del connection pool: servono a individuare colli di bottiglia prima che diventino indisponibilità.
Containerizzazione come middleware moderno
Docker incapsula un application server e le sue dipendenze in un'immagine portabile; Kubernetes orchestra più container gestendo scalabilità e riavvio automatico. Un container condivide il kernel del sistema operativo host, a differenza di una macchina virtuale che ne include uno proprio: isolamento e overhead diversi.
Integrazione con database e servizi esterni
L'application server media l'accesso ai dati (via JDBC) e l'esposizione di servizi, sia in stile SOAP (XML, contratti WSDL) sia in stile REST (HTTP, risorse).
Riferimenti normativi e tecnici
- Decreto Legislativo 82/2005 (Codice dell'Amministrazione Digitale - CAD): detta i principi su continuità operativa, disaster recovery e sicurezza delle infrastrutture informatiche della PA, di cui application server e middleware sono componenti.
- Linee guida AgID su infrastrutture digitali e cloud della PA (es. strategia cloud e Polo Strategico Nazionale): orientano le amministrazioni verso infrastrutture consolidate, standard e ad alta disponibilità, incluse le componenti middleware.
- Standard tecnici di interoperabilità (formati aperti, API): rilevanti quando il middleware espone servizi verso altre amministrazioni o verso il cittadino.
Collegamenti con le altre materie
- Reti e sistemi (Linux/Windows): porte, firewall e configurazioni di rete su cui gira l'application server.
- Database relazionali: connection pooling, transazioni distribuite gestite dal middleware.
- Sicurezza informatica: SSL/TLS, certificati, autenticazione a livello middleware.
- Codice dell'amministrazione digitale (CAD): continuità operativa e disaster recovery delle infrastrutture su cui girano i servizi digitali della PA.
- Backup e recovery: strategie di ripristino di configurazioni e dati di sessione del middleware.
- Linguaggi di programmazione: le applicazioni ospitate dall'application server sono tipicamente scritte in linguaggi come Java.
Errori tipici e trappole d'esame
- Confondere application server con web server: il secondo serve contenuti statici, il primo esegue logica applicativa.
- Scambiare WAR ed EAR per contenuto e scopo.
- Pensare che il connection pool sia una singola connessione permanente invece di un insieme di connessioni riutilizzabili.
- Identificare load balancing con clustering: distribuiscono il carico il primo, garantiscono continuità il secondo.
- Credere che un'interazione stateless mantenga informazioni tra richieste.
- Confondere coda (un solo consumatore) con topic (più sottoscrittori) in un message broker.
- Pensare che Docker equivalga a una macchina virtuale in termini di isolamento e overhead.
- Ritenere che l'hot deployment non abbia alcun impatto sulle richieste in corso.
- Confondere Apache Tomcat (solo servlet container) con un application server Java EE completo.
- Attribuire alla replica di sessione la stessa funzione della sessione sticky (che instrada lo stesso client sullo stesso nodo, senza copiare lo stato).
- Confondere SOAP e REST come sinonimi anziché come due stili di esposizione servizi diversi.
Checklist di ripasso
- Sai spiegare la differenza tra web server e application server con un esempio ciascuno?
- Conosci almeno tre implementazioni di application server Java EE e le loro caratteristiche?
- Sai cos'è un connection pool e perché è più efficiente di aprire una connessione per richiesta?
- Sai distinguere una coda da un topic in un message broker?
- Conosci la differenza tra load balancing e clustering?
- Sai spiegare cosa significa replica dello stato di sessione e quando serve?
- Conosci la differenza tra WAR ed EAR e quando si usa ciascuno?
- Sai cosa fa la terminazione SSL/TLS a livello middleware?
- Sai a cosa serve il monitoraggio JMX e quali metriche osserva?
- Conosci la differenza concettuale tra un container e una macchina virtuale?
- Sai distinguere un servizio esposto in SOAP da uno esposto in REST?
- Sai collegare la continuità operativa del CAD alle infrastrutture middleware?
Come usare la piattaforma
Utilizza la banca dati quiz per esercitarti sui concetti chiave, la mappa concettuale per collegare i componenti middleware tra loro, le flashcard per fissare i termini tecnici (WAR, JMS, pooling, clustering) e la simulazione d'esame per verificarti a tempo.