J2EE Antonio Cisternino. Java Beans I Java Beans sono un esempio di realizzazione di un sistema a componenti in Java I componenti possono adottare convenzioni.

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Elaborazione di Franco Grivet Chin
Architetture dei sistemi distribuiti Prof
Applet Java.
Universita di Camerino
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Java Enterprise Edition (JEE)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Università degli Studi di Modena e Reggio Emilia
IN QUESTA PRESENTAZIONE…
OUTLINE Riprogettazione del database del portale Web della Facoltà di Ingegneria Sviluppo di una applicazione WEB DB : HOMEPAGE DOCENTI Architettura multilivello.
Usare Apache Axis.
Tecnologie di implementazione
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Ing. del software B Il Pattern Observer Simone Magnolini.
Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.
LABIS-SD Antonio Cuomo393/121 Clelio Quattrocchi393/127 Emanuele Zuzolo393/136 Fabio Melillo393/141 Stefano Mastrocinque393/135 Valerio Vincenzo Guarino393/155.
Analisi dettagliata e design B. Pernici M.G. Fugini AA
Ambiente di Invocazione Dinamica dei Servizi Enrico Mussi - WP2.
Introduzione al linguaggio Java
Overriding.
Gestione dei Progetti Software 2 (a.a. 204/05) - Lezione 4 1 Il package java.awt Gestione dellI/O orientato alla grafica: le finestre Sviluppo di interfacce.
AA2003/04 © M.A. Alberti Programmazione Interfacce 1 Programmazione Corso di laurea in Informatica.
Struttura di un progetto eclipse
Struts. Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache.
Architettura Java/J2EE
Argomenti della lezione
M.A.E.A.I. Mobile Agent and Enterprise Architecture Integration Il gestore delle politiche Valerio Siri Reti di Calcolatori LS Docente: Antonio Corradi.
Introduzione alla modellazione di sistemi interattivi
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Basi di Dati e Sistemi Informativi
Sistemi Informativi sul Web
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.
Java come linguaggio di programmazione
14/06/2008 – Matteo Baglini Mail: Blog:
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Java Remote Method Invocation (RMI)
IMPLEMENTAZIONE TECNOLOGIE:HIBERNATE & JAVA RMI.
Ingegneria del software Modulo 3 -Tecniche dimplementazione Unità didattica 2 -EJB Ernesto Damiani Università degli Studi di Milano Lezione 3 – Ruoli nella.
Ingegneria del software Modulo 3 -Tecniche dimplementazione Unità didattica 2 -EJB Ernesto Damiani Università degli Studi di Milano Lezione 4 – Le transazioni.
Java Enterprise Edition
Java Enterprise Edition
Progettazione e realizzazione di un’applicazione J2EE Corso TAPS 2001/02 Gianna Reggio.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Java Enterprise Edition
Architetture a componenti Java per la realizzazione di DSS distribuiti Giordano Vicoli - ENEA 28 Ottobre 2003.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Analisi dettagliata e design
Real World data access layers DataSet vs. Custom entities Pierre Greborio Software Architect – PEWay SrL Microsoft MVP – Solutions Architect.
PiattaformePiattaformePiattaformePiattaforme Antonio Cisternino 11 Marzo 2005 OpenSourceOpenSourceOpenSourceOpenSource e ProprietarieProprietarieProprietarieProprietarie.
Java  2 Platform Enterprise Edition (J2EE  ) 1.3.
La gestione degli eventi
Service Composition Analysis Progetto Reti di Calcolatori-LS prof. A.Corradi tutor S.Monti Piattaforma di gestione ed analisi statistica di workflow in.
Java Distributed Event Service Bringing events to J2EE platform Università degli studi di Bologna Corso di Laurea Specialistica in Ingegneria Informatica.
Servizio di newsgroup con replicazione dei server Studente: Letizia Cheng Cheng Sun Matricola: Reti di Calcolatori LS – Prof. A. Corradi A.A. 2003/2004.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 2 -EJB Ernesto Damiani Università degli Studi di Milano Lezione 1 – Introduzione.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
Mobile Agent and Enterprise Architecture Integration Il Gestore di Librerie e Servizi Lambertini Riccardo.
A.a. 2004/05Tecnologie Web1 Corso di Laurea Interfacoltà in Management dell’informazione e della comunicazione aziendale a.a. 2004/05 Tecnologie Web Anna.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Progettazione e realizzazione di un’applicazione J2EE Parte 2.
Tecnologie in movimento
Architetture software
Sistemi distribuiti Sistema distribuito indica una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT P ERSISTENZA.
Transcript della presentazione:

J2EE Antonio Cisternino

Java Beans I Java Beans sono un esempio di realizzazione di un sistema a componenti in Java I componenti possono adottare convenzioni sintattiche sui nomi per esporre la propria interfaccia adottare convenzioni sintattiche sui nomi per esporre la propria interfaccia Esporre l’interfaccia attraverso oggetti che implementano interfacce Esporre l’interfaccia attraverso oggetti che implementano interfacce Nel primo caso il runtime userà l’introspection altrimenti farà uso dell’invocazione di metodi di interfacce conosciute

La classe di un Bean Un Java Bean deve ereditare da java.awt.Component se ha bisogno di essere visualizzato Altrimenti qualsiasi classe è un Bean Gli elementi principali di un Bean sono: Properties Properties Methods Methods Events Events

Properties Le proprietà sono metodi che seguono una convenzione particolare: void setPropertyName(PropertyType val) void setPropertyName(PropertyType val) PropertyType getPropertyName() PropertyType getPropertyName() Sono possibili anche indexed properties: void setter(int index, PropertyType value); void setter(int index, PropertyType value); PropertyType getter(int index); PropertyType getter(int index); void setter(PropertyType values[]); void setter(PropertyType values[]); PropertyType[] getter(); PropertyType[] getter();

Methods and Events I metodi di un bean sono normali metodi Java Un componente può generare eventi Si fa uso del delegation event model Le interfacce sono alla base di questo modello: Un Listener implementa un’interfaccia Un Listener implementa un’interfaccia Chi genera un evento invoca tutti i listener in ascolto Chi genera un evento invoca tutti i listener in ascolto

Event model

Coding pattern L’implementazione dell’event model è basato su convenzioni Un Listener è una classe che implementa un’interfaccia che deriva da EventListener Gli eventi collegati possono essere inclusi in un’unica interfaccia Chi lancia gli eventi implementa addXXXListener e removeXXXListener Un evento che deriva da EventObject fornisce informazioni sull’evento

Bean Persistence Un componente normalmente può essere utilizzato in un designer A design time il componente espone alcune proprietà Per persistere il suo stato: Serializzazione/Externalization Serializzazione/Externalization Salvare e ripristinare le proprietà (non sempre basta!) Salvare e ripristinare le proprietà (non sempre basta!)

Creare un Bean Se si sa che un Bean non è stato preinizializzato si può usare new Altrimenti si ricorre al ClassLoader e alla Reflection (cercando in it.unipi.di.MioBean.ser: ClassLoader cl = this.getClass().getClassLoader(); ProvaBean w = (ProvaBean) Beans.instantiate(cl, “it.unipi.di.MioBean”);

Packaging I Beans possono essere impacchettati in file jar Nel manifesto si indicano quali classi sono Beans e con che caratteristiche Si usa un insieme di coppie nome/valore: Name: argle/Bargle.class Java-Bean: True Name argle/BargleBeanInfo.class Design-Time-Only: True

Esempio di Bean public class HWBean extends Canvas { private String s = "Hello World"; private String s = "Hello World"; public String getText() { public String getText() { return s; return s; } public void paint(Graphics g) { public void paint(Graphics g) { g.drawString(s, 0, 15); g.drawString(s, 0, 15); }}

Enterprise Java Beans La specifica Enterprise JavaBeans (EJB) definisce un’architettura per lo sviluppo e il deployment di “transactional, distributed object applications-based, server-side software components” Organizzazioni possono comprare o sviluppare componenti focalizzandosi sulla business logic piuttosto che sugli aspetti di concorrenza e distribuzione

Goin’ Enterprise EJB costruisce sulla specifica Java Beans Un EJBean è sempre contenuto in un EJB Container I container amministrano i componenti in modo da ottimizzare l’uso di risorse (es. pooling)

EJB Container Un contenitore EJB è responsabile per mediare l’accesso di un EJBean alle risorse Ad esempio: un altro bean, o una connessione JDBC L’interazione tra l’EJBean e il contenitore: Callback methods Callback methods EJBContext EJBContext Java Naming and Directory Interface (JNDI) Java Naming and Directory Interface (JNDI)

Callback Methods Ogni EJBean implementa un’interfaccia derivata da EnterpriseBean Queste interfacce definiscono metodi che possono essere invocati dal container Ad esempio l’interfaccia EntityBean (sel.): ejbLoad() ejbLoad() ejbStore() ejbStore() ejbActivate() ejbActivate() ejbPassivate() ejbPassivate()

EJBContext È un’interfaccia che espone i metodi per interagire col contenitore: getCallerPrincipal() getCallerPrincipal() getEJBHome() getEJBHome() getEJBLocalHome() getEJBLocalHome() getRollbackOnly() getRollbackOnly() getUserTransaction() getUserTransaction() isCallerInRole(java.lang.String roleName) isCallerInRole(java.lang.String roleName) setRollbackOnly() setRollbackOnly()

JNDI Offre un’interfaccia standard a sistemi di naming, come ad esempio LDAP Ogni EJBean ha automaticamente accesso un sistema di naming chiamato Environment Naming Context (ENC). ENC è amministrato dal container e accesso dai bean JNDI JNDI ENC consente ad un bean l’accesso a risorse come connessioni JDBC, altri EJBeans, e proprietà specifiche del bean

Accedere un Bean Ogni EJBean è composto da tre componenti: Classe di implementazione Classe di implementazione Un’interfaccia Home (che rappresenti i metodi per la gestione del life cycle dell’oggetto) Un’interfaccia Home (che rappresenti i metodi per la gestione del life cycle dell’oggetto) Un’interfaccia Remote (che esponga i metodi che implementano la business logic) Un’interfaccia Remote (che esponga i metodi che implementano la business logic)

Tipi di enterprise bean Entity Bean: sono bean solitamente utilizzati per accedere ai dati memorizzati in un database Session Bean: rappresentano processi o agiscono come agenti che compiono qualche attività Un’applicazione EJB è costituita da un insieme di entity o session beans

Persistenza Spesso i bean devono essere salvati e ripristinati Esistono due tipi di persistenza: Container-Managed Container-Managed Bean-Managed Bean-Managed La prima si basa sulla serializzazione Mentre la seconda è controllata dal Bean (e quindi è più efficiente!)

JBoss È una collezione di progetti: JBoss Application Server JBoss Application Server Javassist (bytecode generation) Javassist (bytecode generation) AOP AOP Nukes/JBoss (Content Management) Nukes/JBoss (Content Management) JBoss-IDE (Integration with Eclipse) JBoss-IDE (Integration with Eclipse) Hibernate (Oggetti mappati su tabelle relazionali) Hibernate (Oggetti mappati su tabelle relazionali)

JBoss Application Server Fino alla versione 3 è un’implementazione open della piattaforma J2EE La nuova release del sistema propone un modello alternativo a quello proposto da Sun Oltre a EJB incorpora Tomcat e le servlet in una lista quasi infinita di buzzword

Hibernate Mappare oggetti su un database può essere molto utile: nel mondo programmativo si leggono oggetti che corrispondono a righe di tabelle L’approccio? Dei file XML indicano come mappare i field di una classe sulle colonne di una tabella relazionale

Sommario Il sistema dei tipi in Java Reflection in Java Il modello di caricamento dinamico Open Java patterns JDBCJavaBeansEJB JBoss, Hibernate Conclusioni

Conclusioni Java ha introdotto elementi come il caricamento dinamico dei tipi e la reflection Questi meccanismi, uniti ad un ambiente con VM type-driven ha favorito l’affermarsi di pattern di programmazione prima più complessi EJB non fa altro che astrarre coding patterns in un framework a oggetti