Date post: | 05-Jul-2015 |
Category: |
Documents |
Upload: | java-user-group-roma |
View: | 1,044 times |
Download: | 0 times |
JBoss Seam unifies JavaEE 5
Sommario
Tecnology TimelineAnnotation @JSFEJB3Seam OverviewPageFlow e processi di businessRapid Seam DevelopmentConclusioni
Tecnology Timeline
EJB3JSF Jboss SEAM
MVC
JSP
Servlets
ORM
EJB2
JDBC
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.
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.
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).
Seam Overview
Integrazione JSF e EJB3Modello di componenti uniformeIntegrazione Ajax e jBPMBijectionWorkspace managementUso di POJOs annotatiIntegrazione di TestNG
Architettura di Seam
Contesto in Seam
StatelessEventPageConversationSessionBusiness ProcessApplication
Es. ( @Scope(ScopeType.SESSION) )
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
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>
Componenti per sviluppare con Seam
Entities (classi di dominio)DAOs (classi di persistenza)Services (application classes)Action (controller classes)Web Pages (view)
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}
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 ... ;
}
Altre AnnotazioniPer la gestione del contestoPer il ciclo di vita dei componentiPer le eccezioniPer il remotingPer gli interceptoretc...
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!
PageFlow e processi di business...
Rapid Seam Development
Jboss ToolsSeam-gen (tramite console)Gestione del workspaceAnt build integrato e generatoMaven supportiTextiPDFIntegrazione Quartz e jFreeChart dalla v. 2
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
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
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]