Seminar.2008.Jsf.Seam

702
-1

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
702
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Seminar.2008.Jsf.Seam

  1. 1. Java Server Faces adopting the standard Roi Aldaag Consultant, AlphaCSP 2 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  2. 2. Agenda  Introduction  Architecture  Configuration  Features  Pros & Cons 3 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  3. 3. Introduction Not so long ago, if you “Googled“ the word JSF, you probably would have come across … 4 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  4. 4. Introduction The F-35 Joint Strike Fighter (JSF) … 5 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  5. 5. Introduction Today you’d find… JavaServer Faces Technology 6 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  6. 6. Introduction :: What is JSF?  What is JSF ?  Specification  UI framework  Component based  Server side  Java web applications 7 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  7. 7. Introduction :: Motivation 9 Billion Reasons for JSF… 8 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  8. 8. Introduction :: Motivation  JCP Standard JSF 1.0/1.1 JSR 127 May 2005 JSF 1.2 JSR 252 May 2006 JSF 2.0 JSR 314 Q4 2008 ? / JEE6 9 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  9. 9. Introduction :: Motivation  Vendor adoption  JSF RI  MyFaces 10 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  10. 10. Introduction :: Motivation  Popularity  Commercial Projects  Open Source Projects  Market  Documentation 11 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  11. 11. Introduction :: Motivation  IDE integration  Visual tool support  Drag & Drop  Auto-complete 12 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  12. 12. Introduction :: Motivation  Tools  Component Libraries  IceFaces  RichFaces  ADF / Trinidad  Tomahawk  Extensions  Facelets  Ajax4Jsf  DinoFaces 13 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  13. 13. Introduction :: Motivation  View Technology  JSP / Servlet  Other template engines  Facelets  JSFTemplating  Multiple rendering output from same pages 14 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  14. 14. Introduction :: What is Seam?  What is Seam ?  A lightweight framework for JEE5  Unifies JSF and EJB models (Web Beans / JSR 299)  Integrates JSF, POJOs, JPA, jBMP, Drools  Annotation / EL based  Extends JSF  JBoss OS (LGPL)  Release at 2006  Current version 2.0.2 SP1 15 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  15. 15. Introduction :: What is Seam?  Misconceptions  Can be used without EJB3  Does not need a container  Has a small footprint  Easy integration 16 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  16. 16. Introduction :: Why JSF+Seam?  Why JSF + Seam?  JSF has some weaknesses…  Seam extends and enhances JSF  Reduces boilerplate code  Annotations  RESTful URLs  JSF Lifecycle  Contextual state management  Ajax Remoting  Exception Handling  Simple Integration  EJB3 / jBMP/ Drools / Spring 17 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  17. 17. Introduction :: Seam in action 18 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  18. 18. Agenda  Introduction  Architecture  Configuration  Features  Pros & Cons 19 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  19. 19. Architecture :: JSF MVC Controller  Model Config (faces-config.xml)  View Request Events (ValueChangeEvent, ActionEvent) Event Listeners & Front Servlet Action Handlers  Controller (FacesServlet) (ValueChangeListener, ActionListener) Component Tree Component Business (UIComponent) Model Objects (Java Beans) (Managed Beans) UIViewRoot Delegates UIForm (Convertors, Validators, Renderers) Response UIPanel UIInput UIInput Resources (JSP, XML, Properties) View Model 20 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  20. 20. Architecture :: JSF MVC Controller Model Config (faces-config.xml)  POJO’s Request Events (ValueChangeEvent, ActionEvent) Event Listeners & Front Servlet Action Handlers (FacesServlet) (ValueChangeListener, ActionListener) Component Tree Component Business (UIComponent) Model Objects (Java Beans) (Managed Beans) UIViewRoot Delegates UIForm (Convertors, Validators, Renderers) Response UIPanel UIInput UIInput Resources (JSP, XML, Properties) View Model 21 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  21. 21. Architecture :: JSF MVC Controller Controller Config (faces-config.xml)  Front Servlet Request Events (ValueChangeEvent, ActionEvent) Event Listeners &  Configuration Front Servlet (FacesServlet) Action Handlers (ValueChangeListener, ActionListener)  Event Listeners Component Tree Component Business (UIComponent) Model Objects (Java Beans) (Managed Beans) UIViewRoot Delegates UIForm (Convertors, Validators, Renderers) Response UIPanel UIInput UIInput Resources (JSP, XML, Properties) View Model 22 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  22. 22. Architecture :: JSF MVC Controller View Config (faces-config.xml)  Component Tree Request Events (ValueChangeEvent, ActionEvent) Event Listeners &  Component Model Front Servlet (FacesServlet) Action Handlers (ValueChangeListener, ActionListener)  Delegates  Resources Component Tree (UIComponent) Component Model (Java Beans) Business Objects (Managed Beans) UIViewRoot Delegates UIForm (Convertors, Validators, Renderers) Response UIPanel UIInput UIInput Resources (JSP, XML, Properties) View Model 23 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  23. 23. Architecture :: Component Tree JSF tags Component Tree Markup ... UIViewRoot <f:view> HTML <h:form> <h:panelGrid columns = "2"> UIForm <h:inputText/> <h:inputSecret/> WML </panelGrid> UIPanel </h:form> </f:view> .. JSP XML UIInput UIInput 24 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  24. 24. Architecture :: JSF Lifecycle JSF Lifecycle Request Restore View 1. Restore view 2. Apply request values Apply Request Values 3. Process validations 4. Update model values Process Validation 5. Invoke application 6. Render response Update Model Values Invoke Appilcation Render Response Response 25 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  25. 25. Architecture :: Seam Lifecycle Seam Lifecycle Request Restore View Restore Conversation 1. Restore view 2. Restore Conversation Apply Request Values Apply Page Parameters 3. Apply Page Parameters 4. Apply request values Process Validation 5. Process validations 6. Update model values Update Model Values Process Data Model 7. Invoke application Selection 8. Process Selection Invoke Appilcation Invoke Page Action 9. Store Conversation Render Response Store Conversation 10. Render response Response 26 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  26. 26. Architecture :: Seam Concepts Seam Concepts 1. Three Tier 2. POJOs and annotations 3. IoC and bijection 4. Contextual state management 5. Interceptors 27 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  27. 27. Agenda  Introduction  Architecture  Configuration  Features  Pros & Cons 28 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  28. 28. Configuration :: JSF faces-config.xml 29 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  29. 29. Configuration :: Seam faces-config.xml 30 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  30. 30. Configuration :: JSF web.xml 31 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  31. 31. Configuration :: Seam web.xml 32 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  32. 32. Agenda  Introduction  Architecture  Configuration  Features  Pros & Cons 33 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  33. 33. Features :: Demo JSF Project jsfLogin.jsp jsfMasterDetail.jsp /webproj src managed WebRoot WEB-INF LoginBean.java MasterDetailBean.java XML JSP XML JSP web.xml faces-config.xml 34 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  34. 34. Features :: Demo Seam Project jsfLogin.jsp jsfMasterDetail.jsp /webproj src managed WebRoot WEB-INF XML LoginBean.java MasterDetailBean.java XML classes JSP seam.properties lib components.xml JSP web.xml faces-config.xml jboss-seam.jar jboss-seam-ui.jar 35 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  35. 35. Features :: Demo Login page jsfLogin.jsp UIViewRoot UIForm UIPanel UIPanel UIPanel UIOutput UICommand UIInput UIOutput UIInput 36 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  36. 36. Features :: JSF Value Binding LoginBean.java faces-config.xml Managed Bean jsfLogin.jsp Unified EL 37 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  37. 37. Features :: JSF Method Binding LoginBean.java jsfLogin.jsp Invoke Application Phase 38 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  38. 38. Features :: JSF State Management jsfLogin.jsp jsfMasterDetail.jsp User Dependency Injection 39 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  39. 39. Features :: Seam State Management  Contextual state management  Bijection  @In - Injection  @Out – Outjection  Dynamic, contextual, bidirectional  Context Scope  Event < Page < Conversation < Business Process < Session < Application  Conversation  Temporary conversation  Long-running conversation  ConversationId 40 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  40. 40. Features :: Seam State Management MasterDetailBean.java 41 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  41. 41. Features :: JSF Page Flow LoginBean.java jsfLogin.jsp jsfMasterDetail.jsp faces-config.xml 42 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  42. 42. Features :: Seam Page Flow  Page Actions  HTTP GET  Bookmarking  RESTful URLs HTTP POST HTTP GET 43 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  43. 43. Features :: Seam Page Flow  Page Flow <<Start State>> start  JBoss Business Process Management (jBPM) <<Page>> login  Used to define process workflow / page flow true <<Decision>> User  Define transition between pages authenticated ? false  Define navigation rules for each page <<Page>> contacts  Flow is based on events and conditions <<End State>>  Back button end  In conversation mode, back button is disallowed  Undefined transition  Seam blocks actions from “stale” pages  Redirects to relevant page 44 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  44. 44. Features :: JSF Validations MasterDetailBean.java jsfMasterDetail.jsp 45 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  45. 45. Features :: Seam Validations MasterDetailBean.java jsfMasterDetail.jsp @org.hibernate.validator.Email 46 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  46. 46. Features :: JSF Error Handling javax.servlet.ServletException: javax/servlet/jsp/tagext/JspIdConsumer 47 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  47. 47. Features :: Seam Error Handling 48 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  48. 48. Features :: Seam Error Handling Exception Annotations 49 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  49. 49. Features :: Demo MasterDetail page jsfMasterDetail.jsp MasterDetailBean.java 50 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  50. 50. Features :: Demo MasterDetail page jsfMasterDetail.jsp - continued HtmlDataTable HtmlColumn HtmlColumn HtmlOutputText HtmlOutputText 51 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  51. 51. Features :: JSF Ajax  Ajax: Page Wide  Page wide support (region, zone)‫‏‬  Add support to existing components  Sub view processing  Partial tree rendering  Normal lifecycle  Partial page refresh  Example:  Ajax4Jsf, Dynamic Faces 52 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  52. 52. Features :: JSF Ajax  Ajax: Component Wide  Ajaxified components  Client validations  Client component interaction  Custom lifecycle  Example:  RichFaces, IceFaces, ADF (Trinidad)‫‏‬ 53 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  53. 53. Features :: Seam Ajax  Ajax Remoting  Similar to DWR  Access seam components from JS  JavaScript APIs  Seam.Component  Seam.Remote  Expose server side components  @WebRemote  Compatible with Ajax4Jsf  Dojo / GWT integration 54 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  54. 54. Features :: Documentation  JSF  Specification  Forums  Books  Seam  Reference  Forums  Books 55 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  55. 55. Agenda  Introduction  Architecture  Configuration  Features  Pros & Cons 56 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  56. 56. Pros & Cons  Seam Sweet spots  Seam Gen (RoR)  Security (Role / Rule based)  Spring Integration  Integrated testing FW (TestNG) 57 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  57. 57. Pros & Cons  JSF Shortcomings  Too much wiring  HTTP GET / REST is hard  Complicated Lifecycle  Slow learning curve  Writing new components  Poor exception handling 58 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  58. 58. References  JSF  http://www.jcp.org/en/jsr/detail?id=252  http://jcp.org/en/jsr/detail?id=314  http://myfaces.apache.org/  Seam  http://www.jboss.com/products/seam  http://www.seamframework.org/ 59 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar
  59. 59. Thank You ! 60 Copyright AlphaCSP Israel 2008 – Web Framework Playoff Seminar

×