Linea guida: Modulo J2EE
Questa linea guida descrive il modulo J2EE, l'unità di distribuzione indipendente più piccola in un'applicazione J2EE.
Relazioni
Elementi correlati
Descrizione principale

Introduzione

Un modulo J2EE è l'unità di distribuzione indipendente più piccola in un'applicazione J2EE. Esistono vari tipi di moduli J2EE, come descritto nel Concetto: Panoramica di J2EE.

Il numero e la dimensione dei moduli J2EE influiscono sulla facilità con cui si distribuisce e si testa un'applicazione J2EE. Riguardano anche la rapidità con la quale i componenti possono essere riutilizzati per altre applicazioni e con cui il sistema può essere adattato ad altre configurazioni di distribuzione.

Per informazioni sull'assemblaggio di moduli J2EE, consultare la Linea guida: Assemblaggio di moduli J2EE.

Per i dettagli sulla distribuzione di moduli J2EE, vedere la Linea guida: Distribuzione di moduli e applicazioni J2EE.

Identificazione di moduli J2EE

I moduli J2EE sono creati durante l'integrazione, ma riflettono decisioni prese nella fase di implementazione (e di progettazione vera e propria). I moduli J2EE sono spesso utilizzati per creare pacchetti di sottosistemi di implementazione, i quali vengono comunemente associati al Prodotto di lavoro: Progettazione di sottosistemi.

I moduli J2EE dovrebbero contenere EJB e classi strettamente legati e utilizzabili solo da parte di questi EJB. Generalmente simili relazioni sono identificate nella progettazione e tali classi raggruppate in un sottosistema di progettazione. L'identificazione di sottosistemi di progettazione dovrebbe avere un'idea ormai chiara delle problematiche di riutilizzo, sostituzione e supporto di molteplici configurazioni di distribuzione. Tuttavia, quando i moduli vengono assegnati per la distribuzone a nodi specifici, può emergere con facilità la debolezza della progettazione e sarebbero allora necessarie modifiche ai sottosistemi di progettazione (e/o ai sottosistemi di implementazione).

Identificare moduli J2EE che conterranno componenti concepiti per un singolo contenitore. I componenti Web sono inseriti in moduli Web, i componenti EJB in moduli EJB e i componenti del client dell'applicazione in moduli per client dell'applicazione.

Le classi Java regolari utilizzate da molteplici moduli dovrebbero essere inserite in moduli J2EE separati. I file JAR risultanti appaiono in riferimenti di percorso di classe nei moduli che li richiedono (o nella chiusura di tali riferimenti).

In breve, per identificare i moduli J2EE, si deve iniziare individuando un modulo per ciascun sottosistema di implementazione, a meno che il sottosistema contenga componenti da distribuire a vari contenitori, e definire successivamente dei moduli per ogni contenitore.

Modellazione di moduli J2EE

I moduli J2EE sono rappresentati nel modello Implementazione come artefatti UML con uno stereotipo che ne identifica il tipo: <<JAR EJB>>, <<JAR>> o <<WAR>>.

La composizione delle parti (come gli EJB o i servlet) di un modulo J2EE può essere graficamente mostrata tracciando una dipendenza di <<implementazione>> dal componente contenuto al modulo in cui è inserito, come mostrato dal seguente diagramma. Le dipendenze <<JARInclude>> possono anche essere tracciate per mostrare l'inserimento di un intero pacchetto Java nell'archivio.

Diagramma descritto nel testo di accompagnamento.

Un'altra opzione consiste nel rappresentare l'archivio come un pacchetto e mostrare i componenti contenuti nel pacchetto come fa il diagramma sottostante.

Diagramma descritto nel testo di accompagnamento.

Oltre a determinati componenti da inserire nell'archivio, è anche possibile modellare alcune proprietà dei componenti, che saranno infine documentate nel descrittore di distribuzione dell'archivio.

Segue un esempio di come modellare alcune proprietà dei componenti EJB.

Diagramma descritto nel testo di accompagnamento.

Il diagramma sopra illustrato mostra l'assemblaggio di tre EJB, BankEJB, LoanEJB, CustomerEJB e LoanManagerEJB nello stesso modulo, EJBJARArchive1. Notare la modellazione delle proprietà di metodo EJB, i ruoli di sicurezza e le transazioni. In questo esempio, il CustomerEJB viene eseguito al di sotto del tipo di transazione specificato da CustomerTrans (es. "Required"). Il codice sorgente utilizza il nome di ruolo "utente" associato al ruolo utente "Cliente" nel descrittore di distribuzione. Tutti i metodi di LoanEJB e CustomerEJB sono eseguiti con credenziali "di Cliente", anche se l'utente richiamato appartiene a un ruolo differente. Parimenti, i metodi LoanManagerEJB sono eseguiti come "Amministratore". Infine, in BankEJB gli utenti non possono accedere ad alcun metodo.

Un esempio di come modellare alcune proprietà dei componenti Web viene fornito di seguito.

Diagramma descritto nel testo di accompagnamento.

Il diagramma sopra illustrato mostra l'assemblaggio di un servlet in un modulo Web. Notare la modellazione dei ruoli e dei vincoli di sicurezza, dove gli utenti di tipo "Cliente" che impiegano tali metodi risultano servlet, soggetti a vincoli di sicurezza definiti dalle proprietà di WebSecurityContraint1.

La distribuzione di un modulo J2EE a un nodo può essere visualizzata nel modello Distribuzione. Vedere la Linea guida: Descrizione della distribuzione di applicazioni J2EE per ulteriori dettagli sulla modellazione della mappatura dai moduli ai nodi di distribuzione.

Descrittori di distribuzione

Ciascun modulo J2EE contiene un descrittore di distribuzione standard J2EE con zero o più descrittori specifici al vendor. I vari tipi di descrittori di distribuzione sono illustrati nel Concetto: Panoramica di J2EE. In generale, i descrittori di distribuzione standard J2EE contengono principalmente decisioni di progettazione e implementazione. Le decisioni che RUP chiama "decisioni di distribuzione", ad esempio quali nodi sono eseguiti da un componente e come un componente viene configurato per nodi particolari, sono contenute nei descrittori di distribuzione specifici ai vendor.

I descrittori di distribuzione hanno due scopi distinti:

  • Sono un mezzo per comunicare decisioni di progettazione al contenitore. Ad esempio, il descrittore di distribuzione per una sessione EJB ha un "tipo-sessione" che stabilisce se la sessione è stateful o stateless. Il tutto deve essere coerente con la progettazione e il codice - non lo si può cioè semplicemente modificare nel descrittore di distribuzione.
  • Consentono inoltre di personalizzare il comportamento senza compilare nuovamente il codice. Ad esempio, è possibile utilizzare il descrittore di distribuzione per definire quali ruoli sono autorizzati a richiamare metodi specifici. È POSSIBILE modificare ciò senza apportare cambiamenti al codice degli EJB.

I contenuti del descrittore di distribuzione sono impostati quando viene creato il modulo J2EE e quando lo si assembla in un'applicazione J2EE. Per ulteriori informazioni sull'assemblaggio di moduli J2EE, consultare la Linea guida: Assemblaggio di moduli J2EE. Per i dettagli sull'assemblaggio di applicazioni J2EE, vedere la Linea guida: Assemblaggio di applicazioni J2EE.