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.
Un'altra opzione consiste nel rappresentare l'archivio come un pacchetto e mostrare i componenti contenuti nel
pacchetto come fa il diagramma sottostante.
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.
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.
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.
|