Seam unifies Java EE by Massimiliano Ciccazzo

21
JBoss Seam unifies JavaEE 5

description

Abstract: * Introduzione a Seam ; * Ciclo di vita di Seam; * Component and context; * Absolute Inversion of Control; * Rapid Seam development (con esempio di start-up su eclipse o se si preferisce a linea di comando); * Differenze sostanziali con la versione 3.0 / Ajax and Javascript remoting

Transcript of Seam unifies Java EE by Massimiliano Ciccazzo

Page 1: Seam unifies Java EE by Massimiliano Ciccazzo

JBoss Seam unifies JavaEE 5

Page 2: Seam unifies Java EE by Massimiliano Ciccazzo

Sommario

Tecnology TimelineAnnotation @JSFEJB3Seam OverviewPageFlow e processi di businessRapid Seam DevelopmentConclusioni

Page 3: Seam unifies Java EE by Massimiliano Ciccazzo

Tecnology Timeline

EJB3JSF Jboss SEAM

MVC

JSP

Servlets

ORM

EJB2

JDBC

Page 4: Seam unifies Java EE by Massimiliano Ciccazzo

Annotation @

Introdotti con la piattaforma J2EE 1.5, semplificano lo sviluppo e la fase di deploy, rimuovendo rispetto alla J2EE 1.4 la necessità dei descrittori.

Le Java Annotations sono metadati (data about data) associati a parti di codice (classi, interfacce, metodi e campi) e servono ad aggiungere informazioni reperi-bili successivamente e utilizzabili nei più svariati modi:

Documentazione del codice;Generazione del codice;A runtime;Controlli;Gestione avanzata della business logic.

Page 5: Seam unifies Java EE by Massimiliano Ciccazzo

JavaServer Faces

Framework per il presentation tier;Simile all'approccio coi più comuni Framework

MVC;Modello di sviluppo “event-driven”;Modello basato a componenti;Un insieme di componenti di interfaccia pre-

definiti;Gestione del flusso di navigazione;Ideato per essere utilizzato dai vari IDEs.

Page 6: Seam unifies Java EE by Massimiliano Ciccazzo

EJB 3

Parte della J2EE:Sicurezza, gestione del ciclo di vita, accesso remoto,

persistenza, gestione della concorrenza, etc...

Modello semplificato rispetto alla versione precedente (EJB 2.1);

Eliminazione di gran parte dell' xml (descrit-tori) e inserimento delle annotation;

EntityBeans facilmente sostituibili con un ORM;

JNDI può essere sostituito con DI (es. @Re-source).

Page 7: Seam unifies Java EE by Massimiliano Ciccazzo

Seam Overview

Integrazione JSF e EJB3Modello di componenti uniformeIntegrazione Ajax e jBPMBijectionWorkspace managementUso di POJOs annotatiIntegrazione di TestNG

Page 8: Seam unifies Java EE by Massimiliano Ciccazzo

Architettura di Seam

Page 9: Seam unifies Java EE by Massimiliano Ciccazzo

Contesto in Seam

StatelessEventPageConversationSessionBusiness ProcessApplication

Es. ( @Scope(ScopeType.SESSION) )

Page 10: Seam unifies Java EE by Massimiliano Ciccazzo

Bijection

@Inapplicabile a tutti i componenti Seam e non alle

sole risorse gestite da Java EE 5

@Outpubblicazione di una variabile in un componente

Seam su uno specifico contesto

Page 11: Seam unifies Java EE by Massimiliano Ciccazzo

Ajax e Seam

Supporto Ajax JSF (RichFaces, IceFaces)I client AJAX possono invocare componenti server side

facilmente e senza la necessita di un action layer in-termedio

@WebRemoteJavaScript di supporto per la view

remote.jsinterface.js

Annotation per I metodi di business@WebRemote

Debugging

<a4jsf:poll reRender="total" interval="1000" /> Interroga il server, e rigenera un'area (“total”) come occorre

<script type="text/javascript" src="seam/resource/remoting/resource/remote.js">

</script>

@Stateless@Name("helloAction")public class HelloAction implements HelloLocal { public String sayHello() { return "Hello, Jug Roma"; }}

@Localpublic interface HelloLocal { @WebRemote public String sayHello(String name);}

Nella pagina helloWorld.xhtml viene inserito : <s:remote include="helloAction"/>

Oppure<script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"/>

<script type="text/javascript"> //<![CDATA[ function sayHello() { Seam.Component.getInstance("helloAction").sayHello(sayHelloCallback); } function sayHelloCallback(result) { alert(result); }// ]]></script>

Pulsante :<button onclick="javascript:sayHello()">Say Hello</button>

Page 12: Seam unifies Java EE by Massimiliano Ciccazzo

Componenti per sviluppare con Seam

Entities (classi di dominio)DAOs (classi di persistenza)Services (application classes)Action (controller classes)Web Pages (view)

Page 13: Seam unifies Java EE by Massimiliano Ciccazzo

Annotazioni per i componenti

@Name(“componentName”)

@Scope(ScopeType.*)

@Startup@Scope(APPLICATION) @Startup

@Install@Install(dependencies=”nomeComponente”)

@AutoCreate

@Name("jugExample")@Statelesspublic class JugExample { //Insert your code}

Page 14: Seam unifies Java EE by Massimiliano Ciccazzo

Annotazioni per la Bijection@In

required (true o false)create ( true o false ) value ( variabile di contesto o JSF EL )

@Outrequired (true o false)scope (ScopeType.*)value (variabile di contesto)

@Factoryvalue (variabile di contesto)scope (ScopeType.*)autoCreate

@Name("loginAction")@Statelesspublic class LoginAction implements Login { @In("#{user.username}") String username; //Insert your code}

@Name("loginAction")@Statelesspublic class LoginAction implements Login { @Out private User user; //Insert your code}

@Factory(scope=CONVERSATION)public List<Customer> getCustomerList() {

return ... ;

}

Page 15: Seam unifies Java EE by Massimiliano Ciccazzo

Altre AnnotazioniPer la gestione del contestoPer il ciclo di vita dei componentiPer le eccezioniPer il remotingPer gli interceptoretc...

Page 16: Seam unifies Java EE by Massimiliano Ciccazzo

PageFlow e processi di business

Due modelli di interazionePageFlow JSF (pages.xml)PageFlow jBPM (*.jpdl.xml)

Editor visuale con Jboss Tools

Integrazione componenti Seam con Jboss EL

JBPM non e' uno standard!

Page 17: Seam unifies Java EE by Massimiliano Ciccazzo

PageFlow e processi di business...

Page 18: Seam unifies Java EE by Massimiliano Ciccazzo

Rapid Seam Development

Jboss ToolsSeam-gen (tramite console)Gestione del workspaceAnt build integrato e generatoMaven supportiTextiPDFIntegrazione Quartz e jFreeChart dalla v. 2

Page 19: Seam unifies Java EE by Massimiliano Ciccazzo

Conclusioni

Non e' JBoss-only supporto a molteplici ASRischio sulla progettazione, si potrebbero

eliminare troppi layerSindrome da legame a JBossApplication frameworkNuova versione Seam 3 in beta testing

Page 20: Seam unifies Java EE by Massimiliano Ciccazzo

Riferimenti

JBoss Seam http://seamframework.org

Jboss Toolshttp://www.jboss.org/tools

Eclipsehttp://www.eclipse.org

RichFaceshttp://www.jboss.org/richfaces

IceFaceshttp://www.icefaces.org

Page 21: Seam unifies Java EE by Massimiliano Ciccazzo

Qualcosa sull'autore

Massimiliano Ciccazzo

Istruzione :Laurea in Ingegneria Informatica – Universita' degli studi di Roma

“La Sapienza”

JAVA :Sviluppatore dal 2003;

Professional :Project Leader in Ingegneria informatica S.p.A.

Contatti :[email protected]