Seam unifies Java EE by Massimiliano Ciccazzo

1,182 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,182
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Seam unifies Java EE by Massimiliano Ciccazzo

  1. 1. JBoss Seam unifies JavaEE 5
  2. 2. Sommario <ul><li>Tecnology Timeline
  3. 3. Annotation @
  4. 4. JSF
  5. 5. EJB3
  6. 6. Seam Overview
  7. 7. PageFlow e processi di business
  8. 8. Rapid Seam Development
  9. 9. Conclusioni </li></ul>
  10. 10. Tecnology Timeline
  11. 11. 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 reperibili successivamente e utilizzabili nei più svariati modi: <ul><li>Documentazione del codice;
  12. 12. Generazione del codice;
  13. 13. A runtime;
  14. 14. Controlli;
  15. 15. Gestione avanzata della business logic. </li></ul>
  16. 16. JavaServer Faces <ul><li>Framework per il presentation tier;
  17. 17. Simile all'approccio coi più comuni Framework MVC;
  18. 18. Modello di sviluppo “event-driven”;
  19. 19. Modello basato a componenti;
  20. 20. Un insieme di componenti di interfaccia predefiniti;
  21. 21. Gestione del flusso di navigazione;
  22. 22. Ideato per essere utilizzato dai vari IDEs. </li></ul>
  23. 23. EJB 3 <ul><li>Parte della J2EE: </li><ul><ul><li>Sicurezza, gestione del ciclo di vita, accesso remoto, persistenza, gestione della concorrenza, etc... </li></ul></ul><li>Modello semplificato rispetto alla versione precedente (EJB 2.1);
  24. 24. Eliminazione di gran parte dell' xml (descrittori) e inserimento delle annotation;
  25. 25. EntityBeans facilmente sostituibili con un ORM;
  26. 26. JNDI può essere sostituito con DI (es. @Resource). </li></ul>
  27. 27. Seam Overview <ul><li>Integrazione JSF e EJB3
  28. 28. Modello di componenti uniforme
  29. 29. Integrazione Ajax e jBPM
  30. 30. Bijection
  31. 31. Workspace management
  32. 32. Uso di POJOs annotati
  33. 33. Integrazione di TestNG </li></ul>
  34. 34. Architettura di Seam
  35. 35. Contesto in Seam <ul><li>Stateless
  36. 36. Event
  37. 37. Page
  38. 38. Conversation
  39. 39. Session
  40. 40. Business Process
  41. 41. Application
  42. 42. Es. ( @Scope(ScopeType.SESSION) ) </li></ul>
  43. 43. Bijection <ul><li>@In </li><ul><ul><li>applicabile a tutti i componenti Seam e non alle sole risorse gestite da Java EE 5 </li></ul></ul><li>@Out </li><ul><ul><li>pubblicazione di una variabile in un componente Seam su uno specifico contesto </li></ul></ul></ul>
  44. 44. Ajax e Seam <ul><li>Supporto Ajax JSF (RichFaces, IceFaces) </li><ul><ul><li>I client AJAX possono invocare componenti server side facilmente e senza la necessita di un action layer intermedio </li></ul></ul><li>@WebRemote </li><ul><ul><li>JavaScript di supporto per la view </li><ul><li>remote.js
  45. 45. interface.js </li></ul><li>Annotation per I metodi di business </li><ul><li>@WebRemote </li></ul><li>Debugging </li></ul></ul></ul><a4jsf:poll reRender=&quot;total&quot; interval=&quot;1000&quot; /> Interroga il server, e rigenera un'area (“total”) come occorre < script   type = &quot;text/javascript&quot;   src = &quot;seam/resource/remoting/resource/remote.js&quot; > </ script> @Stateless @Name( &quot;helloAction&quot; ) public   class  HelloAction  implements  HelloLocal {      public  String sayHello() {          return   &quot;Hello, Jug Roma&quot; ;     } } @Local public   interface  HelloLocal {   @WebRemote    public  String sayHello(String name); } Nella pagina helloWorld.xhtml viene inserito : < s:remote   include = &quot;helloAction&quot; /> Oppure < script   type = &quot;text/javascript&quot;   src = &quot;seam/resource/remoting/interface.js?helloAction&quot; / > < script   type = &quot;text/javascript&quot; >    //<![CDATA[ function sayHello() {      Seam.Component.getInstance(&quot;helloAction&quot;).sayHello(sayHelloCallback);    } function sayHelloCallback(result) {      alert(result);    }// ]]> </ script > Pulsante : < button   onclick = &quot;javascript:sayHello()&quot; > Say Hello </ button>
  46. 46. Componenti per sviluppare con Seam <ul><li>Entities (classi di dominio)
  47. 47. DAOs (classi di persistenza)
  48. 48. Services (application classes)
  49. 49. Action (controller classes)
  50. 50. Web Pages (view) </li></ul>
  51. 51. Annotazioni per i componenti <ul><li>@Name(“componentName”)
  52. 52. @Scope(ScopeType.*)
  53. 53. @Startup </li><ul><ul><li>@Scope(APPLICATION) @Startup </li></ul></ul><li>@Install </li><ul><ul><li>@Install(dependencies=”nomeComponente”) </li></ul></ul><li>@AutoCreate </li></ul>@Name( &quot;jugExample&quot; ) @Stateless public   class  JugExample {      //Insert your code }
  54. 54. Annotazioni per la Bijection <ul><li>@In </li><ul><ul><li>required (true o false)
  55. 55. create ( true o false )
  56. 56. value ( variabile di contesto o JSF EL ) </li></ul><li>@Out </li><ul><li>required (true o false)
  57. 57. scope (ScopeType.*)
  58. 58. value (variabile di contesto) </li></ul><li>@Factory </li><ul><li>value (variabile di contesto)
  59. 59. scope (ScopeType.*)
  60. 60. autoCreate </li></ul></ul></ul>@Name( &quot;loginAction&quot; ) @Stateless public   class  LoginAction  implements  Login {       @In( &quot;#{user.username}&quot; ) String username; //Insert your code } @Name( &quot;loginAction&quot; ) @Stateless public   class  LoginAction  implements  Login {       @Out  private User user; //Insert your code } @Factory (scope= CONVERSATION ) public  List<Customer > getCustomerList() {        return  ... ; }  
  61. 61. Altre Annotazioni <ul><li>Per la gestione del contesto
  62. 62. Per il ciclo di vita dei componenti
  63. 63. Per le eccezioni
  64. 64. Per il remoting
  65. 65. Per gli interceptor
  66. 66. etc... </li></ul>
  67. 67. PageFlow e processi di business <ul><li>Due modelli di interazione </li><ul><ul><li>PageFlow JSF (pages.xml)
  68. 68. PageFlow jBPM (*.jpdl.xml) </li></ul></ul><li>Editor visuale con Jboss Tools
  69. 69. Integrazione componenti Seam con Jboss EL
  70. 70. JBPM non e' uno standard! </li></ul>
  71. 71. PageFlow e processi di business...
  72. 72. Rapid Seam Development <ul><li>Jboss Tools
  73. 73. Seam-gen (tramite console)
  74. 74. Gestione del workspace
  75. 75. Ant build integrato e generato
  76. 76. Maven support
  77. 77. iText
  78. 78. iPDF
  79. 79. Integrazione Quartz e jFreeChart dalla v. 2 </li></ul>
  80. 80. Conclusioni <ul><li>Non e' JBoss-only supporto a molteplici AS
  81. 81. Rischio sulla progettazione, si potrebbero eliminare troppi layer
  82. 82. Sindrome da legame a JBoss
  83. 83. Application framework
  84. 84. Nuova versione Seam 3 in beta testing </li></ul>
  85. 85. Riferimenti <ul><li>JBoss Seam </li><ul><ul><li>http://seamframework.org </li></ul><li>Jboss Tools </li><ul><li>http://www.jboss.org/tools </li></ul><li>Eclipse </li><ul><li>http://www.eclipse.org </li></ul><li>RichFaces </li><ul><li>http://www.jboss.org/richfaces </li></ul><li>IceFaces </li><ul><li>http://www.icefaces.org </li></ul></ul></ul>
  86. 86. Qualcosa sull'autore <ul>Massimiliano Ciccazzo <li>Istruzione : </li><ul><ul><ul><li>Laurea in Ingegneria Informatica – Universita' degli studi di Roma “La Sapienza” </li></ul></ul></ul><li>JAVA : </li><ul><ul><ul><li>Sviluppatore dal 2003; </li></ul></ul></ul><li>Professional : </li><ul><ul><ul><li>Project Leader in Ingegneria informatica S.p.A. </li></ul></ul></ul><li>Contatti : </li><ul><ul><ul><li>[email_address] </li></ul></ul></ul></ul>

×