Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 10 - J2EE 25/05/2015



Documenti analoghi
Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 10 - J2EE

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 10 - J2EE

Tale attività non è descritta in questa dispensa

Application Server per sviluppare applicazioni Java Enterprise

Panoramica: che cosa è necessario

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Laboratorio di Basi di Dati

Ambienti di Sviluppo

Il web server Apache Lezione n. 3. Introduzione

Esercitazione 4 JDBC

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria. Tecnologie Web T. Esercitazione opzionale Spring MVC

SOMMARIO... 3 INTRODUZIONE...

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

GovPay 2.0. Manuale Installazione

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione opzionale Spring MVC

Pagina n. 1. Via Ficili n Tolentino (MC) Tel.: Fax: info@grupposis.it

MANUALE DI INSTALLAZIONE

App-V Dynamic Suite Composition

FAQ TeamPortal - DVD DEMO

Visual basic base Lezione 01. L'ambiente di sviluppo

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Tecnologie di Sviluppo per il Web

Progetto di Ingegneria del Software 2. SWIMv2

EDICOLA MANAGER EM Importer

MANUALE PARCELLA FACILE PLUS INDICE

File, Modifica, Visualizza, Strumenti, Messaggio

Tecniche di progettazione e sviluppo di applicazioni mobile

Implementazione di MVC. Gabriele Pellegrinetti

Guida all Installazione del ProxyFatturaPA

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Introduzione a Dev-C++

Guida all uso di Java Diagrammi ER

Corso Eclipse. Prerequisiti. 1 Introduzione

SWIM v2 Design Document

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

CONFIGURAZIONE E GESTIONE DEI DATABASE (rev. 1.1)

Registratori di Cassa

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

EJB Components. Leonardo Mariani Esercitazione di Sistemi Distribuiti. Oggetti Distribuiti

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Progetto INCOME. Manuale Utente Operatore Installazione

Programmazione server-side: Java Servlet

Aggiornare applicazioni virtualizzate con App-V

Guida di Pro Spam Remove

COG.I.T.O. Manuale tecnico

ICARO Terminal Server per Aprile

Creare un sito Multilingua con Joomla 1.6

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Introduzione all uso di Eclipse

Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

2015 PERIODO D IMPOSTA

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Online Help StruxureWare Data Center Expert

STUDIUM.UniCT Tutorial per gli studenti

FtpZone Guida all uso

JUMP THE UNIFIED MAPPING PLATFORM

Installazione e caratteristiche generali 1

Guida Joomla. di: Alessandro Rossi, Flavio Copes

EDICOLA MANAGER EM Importer

Acronis License Server. Manuale utente

Product Shipping Cost Guida d'installazione ed Utilizzo

GUIDA UTENTE MONEY TRANSFER MANAGER

PRODUZIONE PAGELLE IN FORMATO PDF

D R O P B O X COS È DROPBOX:

Raffaello. Licenza e requisiti. Trattamento dei dati personali. Installazione

Mac Application Manager 1.3 (SOLO PER TIGER)

Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000

OE-TL100 SOFTWARE PER RACCOLTA ORDINI MAGAZZINO

Servizio Feed RSS del sito CNIT

Manuale per l utilizzo dell applicazione Client per il controllo remoto di apparecchiature da laboratorio

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

FtpZone Guida all uso Versione 2.1

Questa utilissima funzione permette anche di inviare mail per il pagamento dei saldi o per inviare solleciti di pagamento.

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

GateManager. 1 Indice. tecnico@gate-manager.it

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Office 2007 Lezione 07. Gestione delle immagini

Corso basi di dati Installazione e gestione di PWS

Office 2007 Lezione 08

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento.

ENTRATEL - Installazione

Office 2007 Lezione 09. Contenuto riutilizzabile

Capitolo 4 Pianificazione e Sviluppo di Web Part

VERSIONE 5.1/5.2 GUIDA RAPIDA PER WEBACCESS HTML 3

Transcript:

Web Container vs. EJB Container Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T - J2EE Home Page del corso: http://www-db.deis.unibo.it/courses/tw/ Versione elettronica: L..J2EE.pdf Versione elettronica: L..J2EE-2p.pdf 1 Web Container risorse accessibili direttamente dal Web, tipicamente (ma non obbligatoriamente) attraverso un browser client Esempi: risorse statiche, Servlet, JSP EJB Container gestione di EJB che tipicamente contengono la logica di business di un'applicazione distribuita, sia Web-based che non tipico impiego: controller, accesso a DBMS, semplificando fortemente la complessità derivante da accesso concorrente a dati condivisi, gestione ciclo di vita degli oggetti, persistenza, transazionalità... Tomcat è solo Web Container, JBoss è sia Web che EJB Container JBoss supporta molte più funzionalità rispetto a Tomcat, ma è anche molto più pesante: confrontare i tempi di startup dei due Application Server per sole Servlet e JSP, più sensato usare il semplice Tomcat 2 1

Possibilità di realizzare differenti configurazioni gruppi di servizi JBoss Configurazioni server adattabilità a differenti requisiti operativi allo startup del server, scelta della configurazione da lanciare (opzione -c), oppure default possibilità di creare nuove configurazioni oltre a quelle preesistenti La directory server contiene alcune configurazioni preconfezionate in altrettante omonime sottocartelle minimal: solo logging, JNDI Server e URL deployment scanner default: configurazione tipica per applicazioni J2EE all: tutti i servizi disponibili, incluso clustering e RMI/IIOP (CORBA) Suggerimento: utilizzare configurazione di default JBoss Struttura configurazione di default ${server.home}/standalone configuration: file di configurazione, ad esempio loginconfig.xml contiene username/password di accesso lib: librerie necessarie per la configurazione deployments: cartella di hot-deploy delle applicazioni data: cartella contenente dati operativi che devono sopravvivere al reboot tmp: cartella contenente dati temporanei che non sopravvivono al reboot log: cartella di log del server 3 4 2

Browser 25/05/2015 EJB per modello 4-tier 1) Browser accede a Web Server tramite Servlet/JSP esempio: l'utente digita l'url di un negozio on-line nella barra degli indirizzi 2) Servlet/JSP invocano Session Bean per ottenere le informazioni desiderate esempio: la Servlet invoca un metodo prodottidisponibili() 3) Session Bean implementano la logica di business, tipicamente implementando funzionalità di controller e accedendo a DBMS esempio: EJB accede a uno o più DBMS per ottenere l'elenco dei prodotti in vendita e l'elenco dei prodotti non venduti ma già prenotati; infine restituisce l'elenco dei prodotti disponibili 4) DBMS mantengono le informazioni in modo persistente 1) 2) 3) 4) Esempio di Model-View-Control con modello 4-tier JSP contengono la view dell'applicazione Servlet e Session Bean rappresentano la parte di control Servlet molto semplici: tipicamente controllano il tipo di richiesta ed effettuano il solo dispatching delle richieste ai Session Bean Session Bean: contengono la parte di business logic vera e propria Entity sono la parte di model 2) Servlet (Control, 3) Dispatching) 1) 7) Web Container 6) JSP (View) JBoss EJB Container Session Bean (Control, Business Logic) 4) Entity Bean (Model) 5) DBMS 5 6 3

Session Bean I Session Bean implementano la logica di business EJB Container gestisce un pool di Session Bean pronti ad essere assegnati a chi ne ha bisogno, riciclati per clienti diversi in tempi diversi minore tempo di risposta: Session Bean pronti all'uso prima delle effettive richieste maggiore efficienza: si evita di creare e distruggere oggetti ad ogni nuova richiesta Stateless: non viene mantenuto alcuno stato dell'interazione ogni richiesta è indipendente dalle altre massima riusabilità ed efficienza al costo di una limitata espressività se bisogna mantenere stato, occorre ricorrere a meccanismi esterni, ad es. tramite DBMS Stateful: stato serializzato in modo trasparente dall'ejb Container stato mantenuto tra richieste successive da parte di uno stesso client maggiore costo di gestione (serializzazione/deserializzazione) ma semplicità di gestione delle sessioni da parte del programmatore usare solo quando è necessario mantenere lo stato dell'interazione Per cominciare Il file _TecWeb.zip contiene tre progetti Eclipse Importare il progetto come visto nelle precedenti esercitazioni, senza esploderne l'archivio su file system (lo farà Eclipse) File Import General Existing Projects into Workspace Next Select archive file Tre progetti Eclipse: _TecWeb_EAR: Enterprise Application Project che aggrega altri due progetti, _TecWeb_Web e _TecWeb_EJB _TecWeb_Web: Dynamic Web Project per Servlet/JSP, risorse statiche _TecWeb_EJB: EJB Project per Session Bean ed Entity Bean Effettuare il deploy su JBoss (vedi Slide 14 punto 6 e slide 15) ed accedere all'applicazione: http://localhost:80/_tecweb_web/ 7 8 4

Calcolatrice/Accumulatore J2EE View tramite JSP calc.jsp: form per specificare l'operazione richiesta e visualizzare il risultato parziale past.jsp: elenco delle operazioni già effettuate menu.jsp: menu per passare da calc.jsp a past.jsp e viceversa Control/Dispatching tramite CalculatorServlet 1) riceve le richieste dell'utente 2) controlla i parametri della richieste 3) invoca Session Bean necessari ad eseguire la richiesta dell'utente, tenendo traccia dello Stateful SB in uso tramite sessione HTTP 4) demanda la visualizzazione del risultato all'opportuna jsp Control/Business Logic tramite Session Bean OperationsBean: Stateless SB contenente la definizione di somma, divisione... CalculatorBean: Stateful SB che 1) seleziona l'operazione da svolgere in base ai parametri forniti 2) effettua l'operazione richiesta (non direttamente ma demandando ad altro componente) 3) mantiene il risultato parziale delle nostre operazioni Provate ad accedere alla stessa applicazione da due browser distinti: sessioni diverse portano ad avere stati diversi (perché?) 9 Calcolatrice/Accumulatore J2EE: CalculatorServlet Inserite un breakpoint all'inizio del metodo dopost() di CalculatorServlet e seguite passo a passo il flusso di esecuzione Osservare il comportamento della Servlet: a) controlla i parametri b) invoca i Session Bean c) configura la richiesta HTTP aggiungendo eventuali parametri aggiuntivi d) passa il controllo ad una JSP per la visualizzazione del risultato finale Per ottenere un riferimento a Session Bean bisogna specificare: 1) il nome dell'applicazione EAR 2) il nome del modulo EJB 3) il nome della classe (senza package) 3) il nome dell'interfaccia a cui si vuole accedere (con package) Context context = new InitialContext(); CalculatorBeanLocal calculatorbean = (CalculatorBeanLocal) context.lookup ( "java:global/" + "_TecWeb_EAR/" + "_TecWeb_EJB/" + CalculatorBean.class.getSimpleName()+ "!" + CalculatorBeanLocal.class.getName() ); Che cosa succede se si inserisce una stringa non valida come operando? 5

Calcolatrice/Accumulatore J2EE: CalculatorBean Inserite un breakpoint all'inizio dei metodi initialize() e operation() di CalculatorBean e seguite passo a passo il flusso di esecuzione Annotation @Stateful per specificare il tipo di SB Annotation @PostConstruct per specificare che il metodo initialize() deve essere invocato ogni volta che SB viene creato: utile per inizializzare lo stato Il metodo operation() definisce la parte di business logic dichiarato nell'interfaccia CalculatorBeanLocal (annotation @locale), quindi accessibile da altri componenti all'interno del container (vedi CalculatorServlet) dichiarato nell'interfaccia CalculatorBeanRemote (annotation @remote), quindi accessibile da componenti esterni (ad esempio Stand-Alone Client nella slide 5) CalculatorBean a sua volta invoca il SB OperationsBean Riprovate dopo aver chiuso e riaperto il browser: nuova sessione e quindi Stateful SB ri-inizializzato 11 Calcolatrice/Accumulatore J2EE: OperationsBean Annotation @Stateless per specificare il tipo di Session Bean Annotation @PostConstruct non specificata: non abbiamo bisogno di inizializzare lo stato OperationsBean implementa unicamente l'interfaccia OperationsBeanLocal (annotation @locale) metodi addition(), subtraction(),... accessibili unicamente da altri componenti all'interno del container (vedi CalculatorBean), ma non accessibili da componenti esterni (ad esempio Stand-Alone Client nella slide 5) 12 6

Calcolatrice/Accumulatore J2EE: nota finale La logica di business di questo esempio è banale; non sarebbe stato molto differente, a livello di performance e scalabilità, si poteva fare tutto direttamente all'interno di una servlet La logica di business dei Session Bean reali è molto più complessa: accedono a DBMS in modo concorrente, eventualmente interagiscono con sistemi esterni al nostro server, invocano a loro volta altri Session Bean,... Utilizzare la tecnologia EJB ci permette di semplificare la realizzazione di applicazioni Enterprise: ad esempio, transazionalità degli accessi DBMS gestita in modo trasparente al programmatore; utilizzando Servlet avremmo dovuto gestire tale complessità esplicitamente, direttamente nella business logic, con ovvio incremento dei costi di sviluppo e riduzione riutilizzabilità Creare un progetto EAR con Eclipse 1) Creare un Dynamic Web Project File New Other Web Dynamic Web Project 2) Creare un EJB Project File New Other EJB EJB Project 3) Creare un Session Bean selezionare un EJB Project e poi File New Other EJB Session Bean 4) Creare un Enterprise Application Project File New Java EE Enterprise Application Project 5) Includere Dynamic Web Project ed EJB Project all'interno dell'enterprise Application Project Properties Project references selezionare i due progetti precedenti 6) Creare una configurazione per JBoss File New Other Server RedHat JBoss Middleware JBoss Enterprise Application Platform (versione 6.1+) 7) Aggiungere EAR Project a JBoss Servers View tasto destro del mouse su JBoss Add and remove... 13 14 7

Dettagli Pratici: JBoss troubleshooting Opzionale per i più Coraggiosi: Negozio On-line (1) URL assoluto della directory che contiene JBoss NON deve contenere alcuno spazio: di default C:/Applicativi/eclipse/jboss-EAP-6.4.0. Tale path va configurato nel Runtime Environment corrente del Server JBoss dalla view Servers (controllare che la runtime JRE sia jre1.8). Se JBoss non si avvia entro un tempo predefinito (di default 50 secondi), Eclipse lancia un'eccezione su macchine non particolarmente performanti è necessario aumentare tale timeout view Servers Doppio click su JBoss (non deve essere in esecuzione) Timeouts triplicare i valori inseriti salvare Se dopo l'importazione di un progetto si hanno problemi di compilazione relativi alle librerie Servlet/JSP/EJB (ad esempio HttpServlet o similari), probabilmente il Server non è configurato in modo opportuno cancellare e ricreare JBoss e/o Tomcat dalla view Servers andare in Properties Java Build Path Libraries dei progetti con problemi, rimuovere la libreria relativa a JBoss e/o Tomcat, aggiungerla nuovamente tramite Add Library Server Runtime JBoss/Tomcat infine Project Clean... (importante) Riprendiamo l'esempio di negozio on-line basato su JSP Obiettivo: ora logica di business implementata tramite Session Bean, non più all'interno delle JSP Model tramite classe Singleton; solo i Session Bean possono accedere direttamente a questa classe (per semplicità si trascurino problemi relativi ad accesso concorrente al database) Control tramite a) Servlet per effettuare il dispatching delle richieste b) Stateless Session Bean per ottenere l'elenco dei prodotti disponibili c) Stateful Session Bean per gestire il carrello di uno specifico utente View tramite JSP, che fanno richieste alla Servlet 15 16 8

Opzionale per i più Coraggiosi: Negozio On-line (2) 1) Creare uno Stateless SB CatalogueBean che a) fornisce l'elenco dei prodotti disponibili: differenza tra prodotti in vendita e prenotati b) gestisce l'aggiunta di N prodotti alla volta al catalogo invocazione (con N>0) 2) Creare uno Stateful SB CartBean che a) mantiene e fornisce il contenuto di un carrello b) permette di prenotare N prodotti alla volta (N>0), aggiungendoli al carrello; in caso di prenotazione di un numero di prodotti superiore a quelli disponibili, SB riserva un numero di prodotti inferiore a quelli richiesti (interagire opportunamente con CatalogueBean) 3) Creare una Servlet che implementa la parte di Control/Dispatching e che mantiene la sessione HTTP 4) Creare due JSP catalogue.jsp e cart.jsp che implementano la parte di View: JSP non accedono direttamente ai SB e non mantengono stato Alternativa: Oracle GlassFish A vostra disposizione anche un altra implementazione di container J2EE: se volete, provate GlassFish di Oracle (tempi dimezzati in fase di startup rispetto a JBoss, specie vecchie versioni) 1) Scaricare GlassFish Open Source Edition da http://glassfish.java.net/ si consiglia la versione portable, ad esempio glassfish-3.1.zip 2) In Eclipse aggiungere l'adapter per Glassfish File New Other Server Download additional adapters Oracle GlassFish Server Tools la stessa procedura può essere seguita per utilizzare altri server 3) Creare una configurazione per GlassFish File New Other Server GlassFish GlassFish Server Open Source Edition 3 attenzione: come "Application Server Directory" specificare la directory "glassfish" che si trova all'interno della directory radice del server, ad esempio con GlassFish 3.1 installato in D:, specificare D:/glassfish3/glassfish e non D:/glassfish3 17 18 9