ESEconf2011 - Bosch Andy: "JavaServer Faces im Portal - Statusbestimmung"
1. Andy Bosch | www.jsf-academy.com JavaServerFaces im Portal Statusbestimmung: Was geht, was geht nicht?
2. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
3. Wer bin ich? Name: Andy Bosch Entwickler, Berater und Trainer Fokusiert auf JSF und Portlets Mitglied der Expert Group des JSR-301 undJSR-329 Buchautor „Portlets und JSF“ Betreiber von www.jsf-academy.com
4. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
6. Portallösungen IBM WebSphere Portal SAP Netweaver Portal Oracle Portal Liferay Portal JBoss Portal / GateIn … Portale unterliegen keinem Standard. Dennoch bieten heutige Portallösungen ähnliche Funktionalität, allerdings ist die Umsetzung zum Teil komplett unterschiedlich.
7.
8.
9. Lifecycle eines Portlets (JSR-168) Init Render Action Destroy Der JSR-286 (PortletV2) erweitert diesen Lifecycle.
10. Ein triviales Portlet … publicclassSimplePortletextendsGenericPortlet { protectedvoiddoView( ... ) { PrintWriterwriter = response.getWriter(); writer.println( "Hallo Portlet Welt" ); String link = .... writer.println( "<a href='" + link + "'> Klick mich</a>" ); } publicvoidprocessAction( ... ) { // TODO do someactionlogic } }
11. Aufgaben des JSR-168 Festlegung des PortletLifecycles Interfaces und Basisklassen Window States und Portlet Modes PortletSessions PortletPreferences ... Fokus auf dem Portlet selbst
12. Aktuell: JSR-286 Alles aus JSR-168 ist weiterhin gültig Public Render Parameter Portlet Events Resource Serving Portlet Filter Basis für Ajax-Integration Fokus auf dem Zusammenspiel von Portlets
13. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
14. Warum kombinieren? Portlets (bzw. die Portlet-API) ist recht „basisnah“. Trotz des JSR-286 ist eine direkte Verwendung der API nicht gerade komfortabel. Konzepte wie Pageflow, Konvertierung, Validierung, Eventhandling, UI-Komponenten fehlen komplett. Es muss somit die Portlet-Technologie mit einem „reichhaltigen“ UI-Gerüst kombiniert werden.
15. Die Lösung: JavaServer Faces JavaServerFaces ist ein Framework spezialisiert auf das User Interface JavaServerFaces kennt Konzepte wie Konvertierung, Validierung, Bean Management und Fehlerhandling JSF hat zahlreiche Erweiterungen für Ajax-Integration, Templating oder Persistenz
16. JSF + Portlets? Das Problem jedoch ist der „Glue-Code“ Jede Technologie soll ihre „ureigene“ Funktionalität beibehalten Integrationsaufwände sollen möglichst gering sein Geht das überhaupt? Ja, mit dem JSR-301 und dem JSR-329
17. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
18. JSR-301: PortletBridgeSpecification for JavaServerFaces Ziel ist die Bereitstellung einer standardisierten Bridge Unterscheidung nach Versionen:JSF 1.2 + Portlet 1.0 = JSR-301JSF 1.2 + Portlet 2.0 = JSR-329JSF 2.0 + Portlet 2.0 = … sage ich nachher
25. Bridge Request Scope JSF geht davon aus, dass der komplette Lebenszyklus in einem Request abgearbeitet wird. Bei Portlets wird die Render- und die Action-Phase in zwei komplett unabhängigen Requests durchgeführt Die Bridge muss dafür sorgen, dass alle notwendigen Informationen für JSF in beiden Requests vorhanden sind.
27. Einsatz der PortletBridge (1) Entwicklung einer „normalen“ JSF-Anwendung Entfernen „verbotener“ Tags wie <html>, <body>, <head> etc. Einbinden der JSR-301 / JSR-329 Libs Einbinden der portlet.xml und Hinterlegen des GenericFacesPortlet
28. GenericFacesPortlet Die Portletspezifikation verlangt eine Klasse, die das Portlet-Interface implementiert. Eine JSF-Anwendung hat zunächst keine Klasse, die das Portlet-Interface implementieren könnte. Der JSR-301/ JSR-329 stellt ein GenericFacesPortlet bereit, das als erster Ansprechpartner dienen kann
29. Einsatz der PortletBridge (2) <portlet> <portlet-name>HelloJSFPortlet</portlet-name> <portlet-class>javax.portlet.faces.GenericFacesPortlet </portlet-class> <init-param> <name>javax.portlet.faces.defaultViewId.view </name> <value>/helloJSF.jsp</value> </init-param> ... </portlet>
30. JSF-Komponentenbibliotheken? Eine generelle Aussage zur Einbindung von Komponentenbibliotheken kann nicht getroffen werden. Jede Bibliothek muss auf ihre „Portal-Tauglichkeit“ hin überprüft werden. Ggf. muss eine eigene Lösung ergänzt werden. Mit JSF 2.0 ist vieles besser
31. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
32. JSF 2.0 und Portlet 2.0 Noch kein Standard in Sicht Persönliche Versuche und einzelne Initiativen Z.B.: Liferayhat ein neues Projekt initiiert: www.portletfaces.org Mit den aktuellen JSF-Bridges für 2.0 sind schon gute Ergebnisse erziehlbar.
33. Agenda Portale und Portlets Motivation für JSF+Portlets JSR-301& Co: Portlet Bridge for JSF Was ist der JSR-301? Was ist der JSR-329? Funktionsweise der Portlet Bridge Ausblick JSF 2.0 und Portlet 2.0 Fazit
34. Fazit Eine Kombination von JSF und Portlets ist standard-basiert möglich. Der Vorteil der JSR-301/JSR-329 Lösung ist: Konzentration auf die JSF-Entwicklung, dann eine einfache und schnelle Portierung Auch JSF 2.1 geht schon im Portal, auch wenn der JSR noch nicht in Sicht ist.
35. Sind noch Fragen offen geblieben? Follow me on Twitter: @andybosch Kontakt gerne über: andy.bosch@jsf-academy.com