Linea guida: Identificazione di servlet
Questa linea guida descrive come identificare e modellare servlet relativi ad un'applicazione J2EE.
Relazioni
Descrizione principale

Introduzione

Questa linea guida si focalizza sull'identificazione di servlet. Un'ulteriore guida ai servlet viene fornita dalla Linea guida: Servlet.

Identificazione di servlet

I servlet sono classi server che interagiscono con client basati su Web. Sono principalmente identificati da classi di controllo (vedere la Linea guida: Classe di analisi) nelle architetture Web. Possono essere utilizzati per produrre pagine Web con scopi di presentazione, ma in generale a questo scopo vengono utilizzati i JSP (consultare la Linea guida: JSP (JavaServer Page)). Possono essere anche utilizzati per interagire con i database, ad esempio in una configurazione di distribuzione incentrata sul Web, come descritto dal Concetto: Configurazioni di distribuzione J2EE. A partire da J2EE 1.4, i servlet possono essere anche utilizzati per implementare servizi Web come definito dalla specifica JAX-RPC.

Tuttavia, per applicazioni che hanno una logica di business significativa o che richiedono le funzioni offerte dagli EJB, è più appropriata una configurazione di distribuzione multi-tier (leggere il Concetto: Configurazioni di distribuzione J2EE). In questo caso, i servlet sono solitamente utilizzati per coordinare la logica di presentazione e offrire un collegamento alla logica e ai dati di business forniti dagli EJB.

Un modo comune per utilizzare il servlet è un front controller. I front controller forniscono soltanto un'entrata per applicazione, rendendo più uniformi e facili da gestire la sicurezza, lo stato dell'applicazione e la presentazione.  Un front controller accetta una richiesta dell'utente, la elabora e determina il giusto componente di presentazione al quale inoltrarla. Vedere Core J2EE Design Patterns - Front Controller ([ALU01]) per i dettagli.

Se la progettazione contiene molti JSP con codici di controllo simili, introdurre un servlet per consolidare questa logica in un solo posto.

Modellazione di servlet

In RUP i servlet sono rappresentati dal Prodotto di lavoro: Classe di progettazione e sono poi modellati come classi. I servlet per la gestione di richieste HTTP sono stereotipati come <<HTTPServlet>>, quelli per la gestione di altri protocolli come <<GenericServlet>>.

Ogni servlet può essere considerato come fornitore della stessa interfaccia, una singola operazione che soddisfa richieste e fornisce informazioni standard nei contesti client, sessione e servlet. Quindi, modellare un servlet non consiste nel definire le operazioni di interfaccia, ma piuttosto le relative responsabilità e il modo in cui interagisce con altri elementi della progettazione, come client, JSP, classi helper, EJB, ecc.

Endpoint dei servizi Web

Come si è visto in precedenza, i servlet possono essere utilizzati per implementare servizi Web e devono soddisfare i seguenti requisiti:

  • Avere un costruttore pubblico predefinito.
  • Implementare tutti i metodi elencati dall'Interfaccia endpoint del servizio; i relativi metodi di business devono essere pubblici e non finali o statici.
  • Devono essere stateless.
  • La classe deve essere pubblica, ma né finale né astratta.