UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di un’applicazione Web-Database a 3 livelli per la gestione degli appelli d’esame Relatore Tesi di Laurea di Prof. Sonia Bergamaschi Andrea Malavasi Correlatore Ing. Maurizio Vincini Anno Accademico 2001-2002 Agenda Introduzione alla J2EE Architettura della J2EE Caratteristiche degli EJB Conclusioni Demo dell’applicazione -2- Il problema… Realizzare applicazioni distribuite soddisfando i seguenti requisiti: • definizione di un modello di progettazione standard • supporto per applicazioni client eterogenee • riduzione dei tempi di sviluppo • scalabilità • gestione efficiente delle risorse • gestione del carico di lavoro automatica • integrazione dei sistemi esistenti • ampia scelta di server, strumenti e componenti • sicurezza -3- Modello applicativo della J2EE -4- EJB: I vantaggi Semplificazione del processo di sviluppo Riusabilità del codice e Modularità Robustezza Gestione automatica di: transazioni (Commit, Rollback e Recovery) scalabilità: aumentando l’HW, le prestazioni aumentano in modo lineare sicurezza Alte prestazioni bilanciamento dinamico dei carichi di lavoro caching delle connessioni al database -5- EJB: l’architettura EJB Server: Application Server EJB Container: gestisce gli EJB Enterprise Bean Instance: una istanza di EJB Client: utilizzatore finale del bean -6- Tipologie di EJB Sono previsti due tipi di EJB: – Session Bean • non sono persistenti – Entity Bean • sono persistenti -7- Session Bean Non è persistente Implementa l’interfaccia javax.ejb.SessionBean In genere implementa la logica di business dell’applicazione – Riceve le invocazioni dal client – Agisce (creazione, modifica, cancellazione) sugli Entity Bean • si comporta come client verso gli entity • L’accesso agli entity bean risulta così maggiormente protetto – La sequenza delle operazioni sono eseguite in genere all’interno di una transazione Ciascuna istanza è da considerarsi una ESTENSIONE logica dell’applicazione client – La vita di un session bean è legata al client che l’ha instanziato – E’ come un agente dedicato allo specifico client, in esecuzione sul server -8- Entity Bean Rappresenta un oggetto persistente Consente di mappare una sorgente dati su una classe Java – tabella, vista, join o stored procedure in un database relazionale – dati legacy opportunamente incapsulati La lettura / modifica degli attributi di tali entità si traduce nelle corrispondenti operazioni sulla tabella stessa Ciascuna istanza può essere condivisa da tanti client Quando l’istanza di un Entity Bean smette di esistere, il dato che rappresenta continua ad esistere sul DB in caso di crash del sistema i dati rappresentati dagli entity bean resistono, mentre i session bean vengono -9- Connection Pooling Accesso al database per mezzo di una tecnica definita connection pooling che permette l’accesso alle risorse server in particolare ai database ad un numero elevato di utenti Gestione automatica della cache di connessione da parte dell’EJB container Utilizzo della standard API JBDC che mette a disposizione un’interfaccia definita DataSource per la gestione delle connessioni. - 10 - Vantaggi della J2EE Architettura e sviluppo semplificati Scalabilità per soddisfare l’aumento di richieste Integrazione di sistemi informativi preesistenti Ampia scelta di server, strumenti di sviluppo, componenti Modello per la sicurezza flessibile - 11 - Architettura e sviluppo semplificati La piattaforma J2EE offre un modello di sviluppo basato su componenti semplificato Basandosi sulla J2SE, supporta il paradigma Write Once, Run Anywhere: un’applicazione risulta portabile su tutti i server conformi allo standard J2EE Il modello basato su componenti offre vantaggi rispetto a diversi aspetti: adattamento flessibile alle funzionalità richieste per un’applicazione definizione del comportamento dell’applicazione in fase di assemblaggio e deployment suddivisione dei ruoli - 12 - Scalabilità I container della piattaforma J2EE forniscono un meccanismo che permette di ottenere un alto livello di scalabilità dell’applicazione distribuita, senza richiedere l’intervento da parte dello sviluppatore Possono realizzare la scalabilità rispetto a particolari funzionalità dell’applicazione, come il supporto alle transazioni, le connessioni verso i database, la gestione del ciclo di vita È possibile configurare i container per essere eseguiti su più calcolatori distribuiti - 13 - Integrazione di sistemi informativi preesistenti La piattaforma J2EE, insieme alla J2SE, include un insieme di API standard per accedere a sistemi informativi preesistenti: JDBC: accesso a database relazionali Java Transaction API: gestione e coordinamento di transazioni distribuite Java Naming and Directory Service: accesso alle informazioni dei servizi di naming e directory aziendali Java Message Service: invio e ricezione di messaggi JavaMail: invio e ricezione di messaggi di posta elettronica Java IDL: invocazione di servizi CORBA - 14 - Conclusioni J2EE piattaforma multilivello per la realizzazione di applicazioni distribuite Strumenti utilizzati: Linguaggio di programmazione: Sistema operativo: WEB server: EJB server: RDBMS: Componenti utilizzati: EJB (implementati 25) JSP (implementate 18) Oltre 10.000 linee di codice prodotte - 15 - Java 2 Unix Tomcat JBoss SQL server