1 / 27

Java Enterprise Edition

Java Enterprise Edition. Gabriele Tolomei DAIS – Università Ca ’ Foscari Venezia. Programma del Corso. 09/01 – Introduzione 10/01 – Java Servlets 16-17 /01 – JavaServer Pages (JSP) 23-24/01 – Lab: Applicazione “ AffableBean ” 30-31/01 – Enterprise JavaBeans (EJB) + Lab.

chipo
Download Presentation

Java Enterprise Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Enterprise Edition Gabriele Tolomei DAIS – UniversitàCa’ FoscariVenezia

  2. Programma del Corso • 09/01 –Introduzione • 10/01 – Java Servlets • 16-17/01 – JavaServer Pages (JSP) • 23-24/01 – Lab: Applicazione“AffableBean” • 30-31/01 – Enterprise JavaBeans (EJB) + Lab

  3. EJB 3.0: Introduzione • Componenti server-side cheimplementano la “business logic” di un’applicazione • Gli EJBs cooperanoall’interno di un server Java EE • I possibili “client” degli EJBs sono: • Componenti del Web Tier (locali o remoti al server) • Client remoti (ad es. Java RMI) • Client di Web Service (HTTP/SOAP) • L’ideadegli EJBs èquella di spostaretutta la logicaapplicativa al di fuori del livello “Web”, in un layer appositamentededicato

  4. EJB 3.0: Componenti • 2 componentiprincipalidefinitidallo standard: • Session Beans  eseguono la logicaapplicativa, gestiscono le transazioni e ilcontrollodell’accesso • Message-Driven Beans  eseguonoazioni (in modoasincrono) in risposta ad eventi (ad es. ricezione di un messaggio JMS) • Ciascunodei due tipi di componenti ha un propriociclo di vita specifico • Il comportamento di ognicomponente EJB èspecificatotramitel’uso di metadati: • Annotazionisulcodice • Descrittori xml  come web.xmlnelcasodelle Servlet

  5. EJB 3.0: Componenti (Nota) • Prima di EJB 3.0 venivanoconsideraticomponenti EJB ancheicosiddetti Entity Beans • Poichéanch’essieranogestiti dal container EJB • Gli Entity Beans rappresentano le tabelle di un DB relazionale • A partire da EJB 3.0 gli Entity Beans non sonopiùgestiti dal container EJB ma usanoserviziimplementati da un’opportunainterfaccia (JPA)

  6. Il Container EJB

  7. Il Container EJB • Gli EJBs vengonoeseguitiall’interno di un apposito container • Uno degliambienti di esecuzionefornitodalleimplementazioni di server Java EE • Fornisceservizi a livello di “sistema”: • Transazioni (compresoquelledistribuite) • Sicurezza • Persistenza (tramite JPA = Java Persistance API) • Esattamente come icomponenti web sonoeseguitinel Web container (Servlet/JSP container), gli EJBs necessitanodeiserviziforniti da un EJB container

  8. EJB: Vantaggi • Semplificano lo sviluppo di applicazioni enterprise distribuite di grandidimensioni • Glisviluppatori di EJBs devonofocalizzarsi solo sullalogica e lasciareilresto al container EJB • Lo sviluppodella UI èsemplificato vista la separazionetrainterfaccia e logica • Portabilità di EJBs sualtri server Java EE (a pattochequestiimplementinoalmeno le stessespecifiche)

  9. EJB: Quando? • Tecnologia utile nelleseguentisituazioni: • Applicazioni con unalogicacomplessachedeveessere “scalabile” (ad es. distribuzione del caricosu diverse istanze server) • Applicazionicherichiedanotransazioni (distribuite) chegarantiscanol’integritàdeidati (il container sioccupa di gestire un correttoaccessoconcorrente ad oggetticondivisi) • Applicazioniaccedute da diversi tipi di client

  10. EJB: Svantaggi • Finoallaspecifica EJB 2.1 le applicazioni EJB eranodifficilmentesviluppabili, deployabili e testabili • Molti file descriptors per la configurazione • Unit testing automaticoimpossibile • … • Alcunisvantaggipersistonoanche in EJB 3.0 • Ad es., l’uso di EJB vincola e costringe la scelta di un server Java EE “completo” (Tomcat, cheè solo un Web container, non puòessereusato!)

  11. EJB: Session Beans • Componentiriusabilichecontengono la logicaapplicativa • I client interagiscono con i Session Beans localmente o remotamente • L’accessoavvienetramiteinvocazione di metodipubblicidell’EJB • 2 tipi di Session Beans: • Stateless Session Beans • Stateful Session Beans

  12. EJB: Stateless Session Beans • Esegue un task per conto di un client di cui NON mantiene lo stato • O meglio lo mantiene per la sola duratadell’invocazione del metodo • Termina al ritornodellachiamata del metodo • Non mantieneinformazioni in memoriasecondaria (disco) • Possonoessere “condivisi” e sonogli EJB piùcomuni • Esempi: invio di email, conversionedellavaluta, …

  13. EJB: Stateful Session Beans • Mantiene le informazioni di stato del client attraversochiamate multiple aimetodidell’EJB • Rilascia lo statounavoltacheil client lo richiede o il bean “termina” • Può dover mantenere lo statosumemoriasecondaria • Solitamenterappresentaentitàtemporanee come il “carrellodellaspesa”

  14. EJB: Message Driven Beans • EJB cheprocessanoimessaggidell’applicazione in modalitàasincrona • Implementati come listener JMS • Simili a Stateless Session Beans • Non mantengonoinformazioni di stato del client • Un unico MDB puòservireimessaggiprovenienti da più client • Gli MDB non espongonointerfacce come i Session Beans

  15. Entity Beans • Rappresentano le tabelle di un RDBMS • Ciascunaistanzacorrisponde ad un record di unaspecificatabella • Ciascunaentità ha un identificativounivoco • Ovviamente, le entitàpossonoavererelazionitra di esse • Ricorda: a partire da EJB 3.0 gli Entity Beans sonointeramentegestiti da JPA

  16. Entity Beans • Le classicherappresentano Entity Beans devonorispettareiseguentirequisiti: • Devonoessere annotate con javax.persistence.Entity • Devonoavere un costruttorevuoto • Senzaparametri • Non possonoesseredichiarate final • Le variabili di istanzapersistentidevonoesseredichiarate private e le proprietàaccedibilitramite getters/setters

  17. Session Beans: Interfacce • A parte gli MDB i Session Beans devonodefinire le interfacce con cui possonoessereinvocatidai client • Le interfacceconsentono di isolarel’implementazionesottostante (facilitandoeventualimodifiche future) • 3 possibiliinterfacce: • Remote Interface • Local Interface • Web Service Interface

  18. Session Beans: Remote Interface • I client possonoessere in esecuzionesu JVM diverse rispettoagli EJB • Utilizzata da: • componenti web (ad es. Servlet) • altriEJB • client dell’applicazione • “Posizione” dell’EJBtrasparenterispetto al client • Il Bean puòesseredistribuito scalabilità

  19. Session Beans: Local Interface • I client devonoessere in esecuzionesullastessa JVM rispetto a quelladegli EJB • Utilizzata da: • componenti web (ad es. Servlet) • altri EJB • “Posizione” dell’EJBdeveesserequella del client • Accoppiamento “forte” tra client e EJB

  20. Session Beans: Web Service Interface • Solo per i Session Beans “Stateless” • I client sono in esecuzionesuuna JVM diversa da quelladegli EJB • Utilizzata da client di Web service tramiteiprotocolliprevistidallespecifiche (SOAP/WSDL su HTTP) • “Posizione” del Bean trasparente • I client possonoessereimplementati in qualsiasilinguaggio di programmazione

  21. Stateless Session Beans: Ciclo di Vita • Istanze create dal container EJB • Mantenute in un “pool” di istanze “pronte” • A fronte di unachiamata di un metodo da parte di un client: • Il container EJB assegnaallachiamataunadelleistanzepronte del bean • Unavoltaeseguitoilmetodol’istanzatornanel pool

  22. Stateful Session Beans: Ciclo di Vita • Il client avviaunasessione • Il costruttore di default del bean vieneinvocato • Le risorsevengono “iniettate” (se presenti) • Il metodo del bean annotato con l’etichetta@PostConstructvieneeseguito • Da questomomentoil bean rimanenella cache per eseguire le altrerichieste del client

  23. Message-Driven Beans: Ciclo di Vita • Il bean riceve un messaggio • Il container EJB ricercaun’istanza del bean disponibilenel pool • Se disponibile, l’istanzavieneusata • Unavoltacompletatal’esecuzione del metodoonMessage() l’istanzatornanel pool • Simile al Stateless Session Bean

  24. Java Persistence API (JPA) • Consente di memorizzare in modoautomaticodaticontenuti in oggetti Java su DB relazionali • Object-Relational Mapping (ORM) • Le applicazionipossonogestire le tabelledei DB relazionali come “normali” oggetti Java • Le classi Java (entità) corrispondono 1:1 alletabellerelazionali definite nel DB

  25. JPA: Vantaggi • Ha unapropriasintassi SQL-like per query statiche e dinamiche • Java Persistence Query Language (JPQL) • Portabilitàrispetto a vari DB • Evitaallosviluppatore di scrivere query di “basso livello” JDBC/SQL • Fornisce in modotrasparenteservizi di caching e ottimizzazionedelle performance

  26. JPA: Provider • Java definisce solo le specifiche standard della JPA API, così come per Servlet, JSP ed EJB • Talispecifichesaranno poi implementate da un cosiddetto provider • Esattamente come Apache Tomcat fornisceun’implementazionedellespecifiche Servlet/JSP (ovvero un web container) • Esattamente come JBoss AS fornisceun’implementazioneconformeallespecifiche Java EE “complete” (web+ejb container) • Esistonovari provider JPA: • EclipseLink • Hibernate • …

  27. JPA + Eclipse • Per aggiungere JPA al progetto EJB Eclipse • Click dx sulprogetto EJB • Properties  Project Facets  spuntare Java Persistence (JPA 1.0)  OK • Click dx sulprogetto EJB • New  JPA Entity from Tables…

More Related