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

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

Cosa è importante: pom.xml Goal Plug-in Repository

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Manuale d uso DropSheep 4 imaio Gestione Pixmania-PRO Ver 1.1

Manuale Utente CMMG Corso Medici Medicina Generale

testo Saveris Web Access Software Istruzioni per l'uso

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

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

PG5 Starter Training Applicazione File System Daniel Ernst EN Stefano Peracchi IT

Ingegneria del Software 1: Eclipse

Manuale Sito Videotrend

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

Laboratorio di Basi di Dati e Web

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Manuale utente. Versione 6.9

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

Importazione dati. e/fiscali Spesometro - Rel con gestionale e/satto. Gestionale e/satto

Guida rapida. Versione 9.0. Moving expertise - not people

Procedure di Acquisto con MePA

Procedura operativa per la gestione della funzione di formazione classi prime

Guida al VPS Forex. Versione 1.0

Accreditamento al portale di Roma Capitale

Symantec IT Management Suite 8.0 powered by Altiris technology

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Gestione risorse (Windows)

ACCESSO ALLA POSTA ELETTRONICA TRAMITE OUTLOOK WEB ACCESS

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

SAP Manuale del firmatario DocuSign

ARCHITETTURA FISICA DEL SISTEMA

Grafici e Pagina web

Introduzione alle macchine a stati (non definitivo)

MANUALE UTENTE PROCEDURA PLANET WEB INTERPRISE (II edizione)

Come utilizzare i riferimenti assoluti e relativi in Microsoft Excel

Guida rapida di installazione e configurazione

Iridium Manuale Aggiornamento Firmware HT10001

Introduzione ORGANIZZAZIONE DEL LIBRO. Il libro è composto da 12 capitoli organizzati nelle tre parti seguenti:

CERTIFICATI CON TIMBRO DIGITALE MANUALE D USO DEL DECODER 2D-PLUS PER LA VERIFICA DEI CERTIFICATI RILASCIATI DAL COMUNE DI PARMA

PG5 Starter Training Applicazione Daniel Ernst EN Stefano Peracchi IT

AnthericaCMS. Gestisci in autonomia i contenuti del tuo sito-web

ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE

18/05/2016 MANUALE UTENTE

SCARICO REFERTI ULSS PD116

Supporto On Line Allegato FAQ

Rete Sicura Plus. Guida d installazione ed attivazione del servizio

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Integrazione al Manuale Utente 1

Ridimensionamento Immagini

INFORMATIVA SULL'USO DEI COOKIE

Progetto NoiPA per la gestione giuridicoeconomica del personale delle Aziende e degli Enti del Servizio Sanitario della Regione Lazio

Laboratorio di Basi di Dati

ISTRUZIONI PER L USO DEL SOFTWARE. PER LA PROGRAMMAZIONE DEI TELECOMANDI Alias

MultiBoot Guida per l'utente

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Quick Print. Quick Print. Guida Utente. Copyright 2013 Hyperbolic Software.

l'editing delle pagine web non è nella forma ma nella metodologia di costruzione e di pubblicazione.

Guida all utilizzo di Campaign Builder

ISTRUZIONI PER L AGGIORNAMENTO DA FPF o precedente

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Utilizzo collegamento remoto

Alcatel-Lucent OpenTouch Connection per Microsoft Outlook

Firenze, 20/12/2012 QUANTUM GIS STAMPA GRANDE FORMATO TRAMITE WMS

Autodesk Map parte I digitalizzazione e importazione dati

PER PRENOTARE SI DEVE ESSERE IN POSSESSO DI:

POSTALIZZAZIONE Manuale d'uso del modulo di postalizzazione di RipartoIG

L INTERFACCIA GRAFICA DI EXCEL

InBank Privati Bonifici Conto Deposito Giroconto e Girofondo Gestione conti ordinante Funzione Il tuo profilo

Application Server per sviluppare applicazioni Java Enterprise

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

* in giallo le modifiche apportate rispetto alla versione precedente datata 17/04/2012

EMPLOYEE SELF-SERVICE DATI ANGRAFICI E MODULISTICA MANUALE UTENTE

VERIFICA MATRICOLE e STAMPA CERTIFICATO INTEGRATIVO DI GARANZIA


Introduzione al linguaggio Java: Servlet e JSP

Il Web, HTML e Java Corso di Laurea in Ingegneria Informatica Progetto S.C.E.L.T.E.

Università per Stranieri di Siena

Risoluzione di problemi ingegneristici con Excel

Bi-LINK - Manuale d uso Version 1.0

Laboratorio di Progettazione di Sistemi Software Progetto: modellazione di un dominio e sue attività

ISTRUZIONI PASSO PASSO PARTECIPAZIONE CONCORSO

Video Scrittura (MS Word) Lezione 1 Funzioni di base

FIRMA DIGITALE E CIFRATURA

ORDINE AVVOCATI DI MANTOVA Guida alla installazione di Consolle Avvocato

1 DESCRIZIONE DELLE FUNZIONI REGISTRAZIONE UTENZE INTERNET Caricamento utente internet (data entry)... 3

Come avviare P-touch Editor

APPENDICE - Pratiche di radiazione Polo ACI

FAQ RISPOSTE A DOMANDE FREQUENTI

Applicazione: GAS - Gestione AcceSsi

Sommario. Oggetto: Istruzioni configurazione client VPN SSL per piattaforma Mac OSX Data: 25/01/2016 Versione: 1.0

NOTE PER IL CONTROLLO E L INVIO TRAMITE L APPLICATIVO ENTRATEL

Framework. Impianti Informatici. Web application - tecnologie

Cartella Clinica Basic

rchinizer il protocollo informatico obiettivi e strategie dott. michele bianchi

Modalità di registrazione al Portale della Pubblica Amministrazione

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

LA PREDISPOSIZIONE DEL BILANCIO IN FORMATO XBRL

Xerox WorkCentre 3655 Stampante multifunzione Pannello comandi

Release MOVIO SCMS. Versione Tutorial. Commenti Dichiarazione di copyright

Transcript:

Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T - J2EE Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica: L..J2EE.pdf Versione elettronica: L..J2EE-2p.pdf 1

Web Container Web Container vs. EJB 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

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 3

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 4

Browser 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 Web Container JBoss EJB Container 2) Servlet 3) (Control, Dispatching) Session Bean (Control, Business Logic) 1) 7) 6) JSP (View) 4) Entity Bean (Model) 5) DBMS 5

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 13 punto 6 e slide 14) ed accedere all'applicazione: http://localhost:80/_tecweb_web/ 6

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 Calcolatrice/Accumulatore J2EE 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é?) 7

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? 8

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 9

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)

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à 11

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... 12

Dettagli Pratici: JBoss troubleshooting URL assoluto della directory che contiene JBoss NON deve contenere alcuno spazio. 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) 13

Opzionale per i più Coraggiosi: Negozio On-line (1) 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 14

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 15

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 ora non più differenza cruciale) 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 16