O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Andy Bosch - JavaServer Faces in the cloud


Confira estes a seguir

1 de 29 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Andy Bosch - JavaServer Faces in the cloud (20)


Mais recentes (20)

Andy Bosch - JavaServer Faces in the cloud

  1. 1. JavaServer Faces in the Cloud Using Google App Engine for your JSF 2.x web application Andy Bosch Independent consultant and trainer
  2. 2. Agenda Clouds and the Google App Engine A first HelloWorld with GAE Introducing JSF 2.0 JSF 2.0 and GAE Component libraries and GAE Conclusion
  3. 3. Who am I? Name: Andy Bosch Trainer, coach, developer, … Specialized on JSF and portlets Expert Group member of JSR-301 and JSR-329 Working with JSF since 2004
  4. 4. Agenda Clouds and the Google App Engine A first HelloWorld with GAE Introducing JSF 2.0 JSF 2.0 and GAE Component libraries and GAE Conclusion
  5. 5. Everything is in the Cloud Software - SaaS - Platform - PaaS - Infrastructure - IaaS -
  6. 6. What is GAE? Google App Engine lets you run your web applications on Google's infrastructure.
  7. 7. Why should I use it? App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs to grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users.
  8. 8. More details, please AppServer which supports most of the common technologies Automatic scaling and load balancing Transactional and highly scalable database model Integration into Google accounts through APIs
  9. 9. The environment In the background, Jetty is used To be more precise: 10s of thousands of Jettys A servlet container, not an application server!
  10. 10. Full Java support? Almost, but there are some restrictions: • Cannot write to the file system • Cannot open socket connections • Cannot start new threads • … The restrictions are build into the Java runtime environment If there are security violations, runtime exceptions are thrown
  11. 11. Tooling environment Eclipse with plug-ins SDK with web server application that emulates all of the App Engine services Admin console Plenty of online documentations
  12. 12. Five steps to a hello world 1. Install SDK 2. Create GAE account 3. Create the application 4. Create project 5. Upload project
  13. 13. Agenda Clouds and the Google App Engine A first HelloWorld with GAE Introducing JSF 2.0 JSF 2.0 and GAE Component libraries and GAE Conclusion
  14. 14. Introducing JSF 2.1 XHtml instead of JSP Ajax Integration Resource Handling Annotation Support View templating Composite Components
  15. 15. JSF 2.0 and GAE During the first months of JSF 2.0, there were several issues causing some troubles Nowadays, both Mojarra and MyFaces can be used with GAE A couple of minimal things have to be considered
  16. 16. A simple JSF page <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core”> <h:head> <title>JSF 2.0 Hello World</title> </h:head> <h:body> <h:form> <h:outputText value=”Hi there” /> </h:form> </h:body> </html>
  17. 17. EL-bug Known bug in JSP support Google AppEngine Issue 1506 (marked as fixed) JSP 2.1 not fully supported Workaround with explicitly defined el factory <context-param> <param-name>com.sun.faces.expressionFactory</param-name> <param-value>com.sun.el.ExpressionFactoryImpl</param-value> </context-param>
  18. 18. Disable multi-threading GAE doesn't support multi-threaded applications <context-param> <param-name> com.sun.faces.enableMultiThreadedStartup </param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>com.sun.faces.enableThreading</param-name> <param-value>false</param-value> </context-param>
  19. 19. Enable sessions <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application></application> <version>1</version> <sessions-enabled>true</sessions-enabled> ... </appengine-web-app>
  20. 20. Disable JNDI in Mojarra classes JNDI is not supported in GAE Patched version of Mojarra
  21. 21. I want to see it now ! With those mentioned changes the HelloWorld app should already be able to be deployed
  22. 22. Let‘s try out some more: JSF 2.x features Composite Components Resource Handling Systemevents Beanvalidation Viewparameter Ajax
  23. 23. Composite Components (1) DRY – Don‘t repeat yourself <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:cc="http://java.sun.com/jsf/composite/helloLib"> <h:head> <title>CC Demo</title> </h:head> <h:body> <h:form> <cc:hello value=”Andy Bosch” /> </h:form> </h:body> </html>
  24. 24. Composite Components (2) hello.xhtml <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:composite="http://java.sun.com/jsf/composite"> <body> <composite:interface> <composite:attribute name="value" required="true" /> </composite:interface> <composite:implementation> <h:outputText value=”Hello #{cc.attrs.value}” /> </composite:implementation> </body> </html>
  25. 25. Using Ajax “Parrot“ example When typing a key, the output should be repeated <h:panelGrid columns="2"> <h:outputText value=„Your name: " /> <h:inputText value="#{personBean.lastname}"> <f:ajax render="@form" /> </h:inputText> <h:outputText value=„Again your name: " /> <h:outputText value="#{personBean.lastname}" /> </h:panelGrid>
  26. 26. Component libraries JSF has a powerful ecosystem of additional component libraries Not all of them can be used in combination with the GAE RichFaces and ICEfaces did have some minor problems, but all entries in Jira are “fixed“ now. PrimeFaces is working !
  27. 27. Links and Resources http://bit.ly/8U6Ebn JSF 2.0 and GAE http://in.relation.to/Bloggers/WeldJSF20AndGoogleApp EngineNavigatingTheMinefieldPart1 http://myfaces.apache.org/core20/googleappenginesup port.html http://primefaces-rocks.appspot.com/ui/home.jsf
  28. 28. Q&A? More trainings: www.jsf-academy.com Contact: andy.bosch@jsf-academy.com Twitter: @andybosch
  29. 29. Evaluation Forms: JavaServer Faces in the Cloud Presented by: Andy Bosch