JBoss Seam unifies JavaEE 5
Sommario Tecnology Timeline JSF EJB3 Seam Overview PageFlow e processi di business Rapid Seam Development Conclusioni
Tecnology Timeline EJB3JSF Jboss SEAM MVC JSP Servlets ORM EJB2 JDBC
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 reperibili successivamente e utilizzabili nei più svariati modi: Documentazione del codice; Generazione del codice; A runtime; Controlli; Gestione avanzata della business logic.
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 predefiniti; Gestione del flusso di navigazione; Ideato per essere utilizzato dai vari IDEs.
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 (descrittori) e inserimento delle annotation; EntityBeans facilmente sostituibili con un ORM; JNDI può essere sostituito con DI
Seam Overview Integrazione JSF e EJB3 Modello di componenti uniforme Integrazione Ajax e jBPM Bijection Workspace management Uso di POJOs annotati Integrazione di TestNG
Architettura di Seam
Contesto in Seam Stateless Event Page Conversation Session Business Process Application Es. )
applicabile a tutti i componenti Seam e non alle sole risorse gestite da Java EE pubblicazione di una variabile in un componente Seam su uno specifico contesto
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 JavaScript di supporto per la view remote.js interface.js Annotation per I metodi di Debugging Interroga il server, e rigenera un'area (“total”) come occorre <script public class HelloAction implements HelloLocal { public String sayHello() { return "Hello, Jug Roma"; public interface HelloLocal public String sayHello(String name); } Nella pagina helloWorld.xhtml viene inserito : Oppure //<![CDATA[ function sayHello() { Seam.Component.getInstance("helloAction").sayHello(sayHelloCallback); } function sayHelloCallback(result) { alert(result); }// ]]> Pulsante : Say Hello
Componenti per sviluppare con Seam Entities (classi di dominio) DAOs (classi di persistenza) Services (application classes) Action (controller classes) Web Pages (view)
Annotazioni per public class JugExample { //Insert your code }
Annotazioni per la required (true o false) create ( true o false ) value ( variabile di contesto o JSF EL required (true o false) scope (ScopeType.*) value (variabile di value (variabile di contesto) scope public class LoginAction implements Login String username; //Insert your public class LoginAction implements Login private User user; //Insert your code public List getCustomerList() { return... ; }
Altre Annotazioni Per la gestione del contesto Per il ciclo di vita dei componenti Per le eccezioni Per il remoting Per gli interceptor etc...
PageFlow e processi di business Due modelli di interazione PageFlow JSF (pages.xml) PageFlow jBPM (*.jpdl.xml) Editor visuale con Jboss Tools Integrazione componenti Seam con Jboss EL JBPM non e' uno standard!
PageFlow e processi di business...
Rapid Seam Development Jboss Tools Seam-gen (tramite console) Gestione del workspace Ant build integrato e generato Maven support iText iPDF Integrazione Quartz e jFreeChart dalla v. 2
Conclusioni Non e' JBoss-only supporto a molteplici AS Rischio sulla progettazione, si potrebbero eliminare troppi layer Sindrome da legame a JBoss Application framework Nuova versione Seam 3 in beta testing
Riferimenti JBoss Seam Jboss Tools Eclipse RichFaces IceFaces
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 :