Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione



Documenti analoghi
! " # $ % & % ' ( $! ) * + *, $ * " (!

1 EJB e Portal Component Object

1 Applicazione J2EE sul SAP WAS con SAP NWDS

JNDI. Massimo Merro Programmazione di Rete 214 / 229

RMI. Java RMI RMI. G. Prencipe

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

Vittorio Scarano. Università degli Studi di Salerno. Lezione 23 Enterprise JavaBeans (8)

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Socket & RMI Ingegneria del Software - San Pietro

GESTIONE DEI PROCESSI

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Test di unità con JUnit4

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

RMI Remote Method Invocation

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Compute engine generici in RMI

Java Remote Method Invocation

Tecnologie di Sviluppo per il Web

Progettazione: Tecnologie e ambienti di sviluppo

Registratori di Cassa

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Concetto di Funzione e Procedura METODI in Java

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Programmazione di sistemi distribuiti

Progettazione : Design Pattern Creazionali

Architettura MVC-2: i JavaBeans

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Programmazione a Oggetti Lezione 10. Ereditarieta

Introduzione alle applicazioni di rete

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Introduzione JDBC interfaccia java.sql driver caricare i driver

1 JSPDynPage, componenti portale e Java Server Pages

Gestione Manutenzioni Immobiliari.

Flavio De Paoli. Agenda. Introduzione Architettura J2EE (Java 2 Enterprise Edition) Servizi e Comunicazione Enterprise Java Beans Future directions

Approccio stratificato

Architetture Web: un ripasso

POLITECNICO DI TORINO III Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica TESI DI LAUREA

Esercitazione n 4. Obiettivi

Progettaz. e sviluppo Data Base

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

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

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Creare client statici

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Client e Server comunicano tramite il protocollo SOAP.

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Esercitazione di Sistemi Distribuiti: Java RMI

Java: Compilatore e Interprete

Telematica II 17. Esercitazione/Laboratorio 6

Una piattaforma per la negoziazione di servizi business to business attraverso la rete Internet

Ingegneria del Software. Presentazione del pattern Proxy

Modulo 4: Ereditarietà, interfacce e clonazione

Programmazione server-side: Java Servlet

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

InitZero s.r.l. Via P. Calamandrei, Arezzo

Laboratorio di Basi di Dati

Installazione e caratteristiche generali 1

MONITORAGGIO UNITARIO PROGETTI 2007/2013 PROTOCOLLO DI COLLOQUI ANALISI ATTIVAZIONE SERVIZIO IGRUE IN SPCOOP. Link.it srl - Analisi Servizio IGRUE 1

Si applica a: Windows Server 2008

Sistemi informativi secondo prospettive combinate

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Enterprise Java Beans e Web Services

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

UML Diagrammi delle classi. UML Diagramma classi 1

Multithreading in Java. Fondamenti di Sistemi Informativi

Esercitazione 4 JDBC

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Programmazione Java Avanzata Spring - JDBC

Modello di Controllo dell Accesso basato sui ruoli (RBAC)

Programmazione distribuita

DESIGN PATTERNS Parte 6. State Proxy

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

UML Component and Deployment diagram

appunti delle lezioni Architetture client/server: applicazioni server

COSTER. Import/Export su SWC701. SwcImportExport

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

SWIM v2 Design Document

Concetti di base di ingegneria del software

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Client - Server. Client Web: il BROWSER

Eclipse e Subversion

appunti delle lezioni Architetture client/server: applicazioni client

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

sito web sito Internet

3. Introduzione all'internetworking

Base di dati e sistemi informativi

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Transcript:

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location transparency), messaggi asincroni o ciclo di vita oggetti (modello a pool), caching, sharing Il modello a componenti che permette di comprare/riusare parti e rende lo sviluppo più veloce. La chiara separazione del lavoro di sviluppo, deployment ed amministrazione di una applicazione EJB. Scenario tipico per EJB EJB E. Tramontana 9/1/05 1/12

Un EJB (o bean) è un componente lato server con una business logic che è conforme a specifiche EJB ed esegue in un container EJB. Componente: classe Java con un ben definito ruolo nel contesto dell architettura EJB e conforme ad un set di interfacce. E una unità che può essere installata da sola. Container: offre funzionalità legate al ciclo di vita dei componenti e alla gestione di transazioni e sicurezza. Il modello a container scherma i componenti dalla conoscenza dell'architettura sottostante. Non vi è una connessione diretta tra il chiamante (client) e l EJB Il server genera il codice che viene inserito tra client ed EJB Questo codice permette di intervenire con i servizi richiesti Le specifiche EJB definiscono come creare una implementazione di un framework per servizi Java lato server (ovviamente, gli sviluppatori di un'applicazione non dovranno preoccuparsi dell'implementazione del framework). L'architettura EJB consiste di: server EJB container EJB home interface remote interface EJB E. Tramontana 9/1/05 2/12

Server Il server EJB è il processo che gestisce i container EJB e che fornisce accesso ai servizi di sistema. Il server EJB può anche fornire interfacce per l'accesso ad un database, a servizi CORBA, etc. Container Il container EJB è un'astrazione che gestisce una o più classi e/o istanze EJB. Attualmente, il container è sempre fornito dal server EJB, poiché l'interfaccia tra server e container non è ancora stata standardizzata. Home interface La home interface definisce i metodi per gestire il ciclo di vita di un oggetto EJB. Questi sono invocati dal container per trovare, creare e rimuovere istanze. Lo sviluppatore deve definire la home interface estendendo l interfaccia javax.ejb.ejbhome. Al momento del deployment, a partire dall home interface il server crea un oggetto detto HomeObject. Permette di Creare una istanza di un bean Trovare un bean Rimuovere una istanza di un bean Restituisce una remote interface EJB E. Tramontana 9/1/05 3/12

Remote interface La remote interface definisce i metodi business di un EJB (quelli che il client usa). Lo sviluppatore crea la remote interface estendendo javax.ejb.ejbobject. Al momento del deployment, un oggetto che implementa la remote interface, detto EJBObject, è creato dal server. In un'applicazione con EJB, un client contatta un server per richiedere di eseguire delle elaborazioni. 1. Il client trova il bean tramite Java Naming and Directory Interface (JNDI). 2. Il client usa l'ejbhome per creare o distruggere istanze di un EJB. Il server crea l'oggetto (EJB instance) e ritorna un proxy object (EJBObject) che ha la stessa interfaccia dell EJB. 3. Il client usa l'ejbobject per invocare i metodi di una istanza. Il client conosce solo riferimenti ad istanze di EJBObject e quando invoca un metodo, l'ejbobject delega la richiesta ad un istanza EJB. EJB E. Tramontana 9/1/05 4/12

Lo sviluppatore EJB scrive le classi usando le specifiche EJB. Le classi conterranno sia metodi per creare e rimuovere una istanza EJB, sia metodi (business) che implementano le funzionalità della classe. L'installatore (deployer) EJB ha il compito di installare una classe EJB sul server EJB e di configurare le proprietà dell'ambiente del server come richiesto dalla classe EJB. L'installatore conosce le caratteristiche dell'ambiente server, come il tipo di database e la sua posizione. Il fornitore del container EJB fornisce il software per installare una classe EJB sul server. Per lo sviluppo occorre avere Le J2EE, dove le librerie per gli EJB sono disponibili Per il deployment e l esecuzione occorre Un ambiente per gli EJB, ad esempio jboss EJB E. Tramontana 9/1/05 5/12

Ci sono tre tipi di EJB: Un session bean è un EJB che implementa una business logic per i client. Es. può elaborare ordini, codificare dati, ricercare dati in un database. Ha vita pari a quella della sessione con il client che lo usa. E creato quando il client richiede un servizio e distrutto quando il client si disconnette (il container gestisce un pool di bean che fornisce ai client rapidamente quando ne fanno richiesta). Uno stateful session bean è associato con un singolo client e mantiene i dati conversazionali relativi a quel client. Uno stateless session bean non mantiene nessun dato. L invocazione di un metodo da parte di un client può essere delegata dal container a qualunque session bean del pool. Un entity bean rappresenta una informazione immagazzinata persistentemente in un database. Fornisce a vari utenti l'accesso condiviso ai dati del database. Un entity bean ha un identificatore unico (primary key) che permette di ricercare il bean (e quindi il dato del database). Ha una vita lunga (come quella del database) e sopravvive a crash del server (viene aggiornato all'ultimo stato committed). Un message-driven bean esegue al ricevimento di un messaggio del client. E' come un session bean ma invocato in modo asincrono. Ha vita breve e non rappresenta direttamente dati del database. EJB E. Tramontana 9/1/05 6/12

Per sviluppare un bean è necessario: definire la home interface: EJBHome definire la remote interface: EJBObject implementare la classe EJB con i metodi business creare il deployment descriptor: un set di file XML che contiene informazioni su come assemblare parti dell applicazione (è usato in fase di deployment) Esempio: sviluppo di un session bean, chiamato AdderBean che somma due numeri Home interface // home interface AdderHome.java import java.rmi.remoteexception; import javax.ejb.*; public interface AdderHome extends EJBHome { Adder create() throws RemoteException, Remote interface // remote interface Adder.java import java.rmi.remoteexception; import javax.ejb.ejbobject; public interface Adder extends EJBObject { CreateException; public int add(int a, int b) throws RemoteException; EJB E. Tramontana 9/1/05 7/12

Classe EJB // session bean AdderBean.java import java.rmi.remoteexception; import javax.ejb.*; public class AdderBean implements SessionBean { public int add(int a, int b) { System.out.println( AdderBean esegue ); return (a+b); public void ejbcreate() { public void ejbremove() { public void ejbactivate() { public void ejbpassivate() { public void setsessioncontext(sessioncontext sc) { EJB E. Tramontana 9/1/05 8/12

Deployment Descriptor (file ejb-jar.xml) <?xml version="1.0"?> <ejb-jar> <description>primo Esempio di EJB</description> <display-name>applicazione Adder</display-name> <enterprise-beans> <session> <ejb-name>adder</ejb-name> <home>adderhome</home> <remote>adder</remote> <ejb-class>adderbean</ejb-class> <session-type>stateless</session-type> <transaction-type>bean</transaction-type> </session> </enterprise-beans> </ejb-jar> Creazione del deployment file 1. Creare una directory classes ed inserirvi i file Adder.class, AdderHome.class e AdderBean.class 2. Creare una directory META-INF ed inserirvi il file ejb-jar.xml 3. Dalla directory padre delle 2 precedenti, eseguire: jar cfv adder.jar * META-INF/ejb-jar.xml In fase di deployment il file adder.jar è inserito in un posto conosciuto dal server. EJB E. Tramontana 9/1/05 9/12

Il client non invoca i metodi del bean direttamente, ma vede solo le interfacce home e remote del bean. Esiste un naming service (JNDI) per cercare l istanza del bean che si vuol usare. Passi del client: 1. inizializzare JNDI 2. cercare (lookup) l'istanza del bean 3. creare il bean Client // client BeanClient.java import java.util.properties; import javax.naming.*; import Adder; import AdderHome; public class BeanClient { public static void main(string[] args) { // prepara le proprieta per costruire il contest Properties prop = new Properties(); prop.put(context.initial_context_factory, "org.jnp.interfaces.namingcontextfactory"); prop.put(context.provider_url, "localhost:1099"); EJB E. Tramontana 9/1/05 10/12

try { // ottiene riferimento a JNDI InitialContext ctx = new InitialContext(prop); // ottiene riferimento alla home interface Object ref = ctx.lookup("adder"); // casting AdderHome home = (AdderHome) ref; // crea il bean Adder adder = home.create(); // invoca il metodo del bean System.out.println( 3 + 5 = + adder.add(3, 5)); catch (Exception e) { Note: L'invocazione home.create() è disponibile attraverso l'homeobject. Il container crea l'oggetto ed invoca il metodo ejbcreate() del bean. EJB E. Tramontana 9/1/05 11/12

Il Deployment Descriptor può specificare che il container fornisca il supporto per le transazioni al bean. Il codice del bean non contiene costrutti per iniziare o finire una transazione, ma il container userà una modalità per gestire la transazione. Esempio di Deployment Descriptor per gestire una transazione <container-transaction> <method> <ejb-name>book</ejb-name> <method-intf>remote</method-intf> <method-name>*</method-name> </method> <trans-attribute>required</trans-attribute> </container-transaction> Attributi per le Transazioni Never - nessuna transazione è permessa, se il client cerca di iniziare una transazione viene lanciata una RemoteException NotSupported - sospende la transazione se presente sul client Supports - la transazione è usata se presente, se non presente il metodo è chiamato senza transazione Required - crea una nuova transazione se non presente RequiresNew - crea sempre una nuova transazione, sospendendo quella esistente se presente Mandatory - lancia un eccezione se nessuna transazione è presente EJB E. Tramontana 9/1/05 12/12