© 2011 IBA CZ, s.r.o.
Vývoj portletů
František Hartman
Aleš Rybák
IBA CZ, s.r.o.
Vývoj portletů
© 2011 IBA CZ, s.r.o.2
Agenda
Úvod do vývoje portletů
Portletové specifikace
JSR-168 / JSR-286
API objects
Tag library
Praktické cvičení
Jednoduchý portlet
Využití portálu
© 2011 IBA CZ, s.r.o.3
Integrační platforma
Integrace existujících aplikací
Vývojová platforma
Standardizované prostředí
• Správa uživatelů, rolí, oprávnění, autorizace,
autentizace, single sign-on
• Správa vzhledu, rozložení
• Hierarchie prostorů a stránek
• Cache
• Personalizace stránek
• Ukládání nastavení
Kdy portál nepoužít?
Portletové standardy
© 2011 IBA CZ, s.r.o.4
Proč? - situace před 10 lety
Různí dodavatelé portálů mají různá API
Není možná spolupráce mezi portlety a různými
portálovými servery
Poskytovatelé služeb musí implementovat několik
různých portletů pro různé portály
Zákazníci jsou “uzamčeni” do konkrétního portálového
řešení
Neexistuje jednoduchá cesta jak připojit aplikaci do
portálu.
Dnes
Standardy JSR-168 a JSR-286
Portlety 1.0 - JSR-168
© 2011 IBA CZ, s.r.o.5
Portletový standard pro lokální java portlety
Dokončeno říjen 2003
http://jcp.org/en/jsr/detail?id=168
Cíle
Jednoduchý programovací model
Přenositelnost
Využití a kooperace s technologiemi J2EE
Interoperabilita s dalšími Java technologiemi
Portlety 2.0 - JSR-286
© 2011 IBA CZ, s.r.o.6
Druhá verze standardu
Dokončeno říjen 2008
http://jcp.org/en/jsr/detail?id=286
Rozšíření JSR-168
Zpětná kompatibilita
Meziportletová komunikace
• Veřejné parametry (public render parameters)
• Události (events)
Poskytování obsahu
• Obrázky, datové soubory
• AJAX
Filtry
Zjednodušení integrace webových rámců
Portlety 2.0 - JSR-286
© 2011 IBA CZ, s.r.o.7
Rozsah specifikací
Portletové API
Portletový kontejner
Kontrakt mezi API a kontejnerem
Struktura aplikace, způsob nasazení
• Deskriptory
Portlety vs. Servlety
Portlety jsou webové komponenty
PortletAPI je vytvořeno podle Servlet API
Portlety oddělují zpracování požadavku a zobrazení
výsledku
Portlety mají stav (portletový mód, stav okna, render
parametry, preference..)
Portlety poskytují pouze fragmenty zatímco servlety se
typicky starají o vykreslení celé stránky
Portletové aplikace
Portletová aplikace
Sada portletů a dalších zdrojů sdílejících stejný
context
Zabalená jako WAR soubor
Instalovaná prostřednictvím portálu
Deskriptory
web.xml
• Nastavení webové aplikace
• Servlety a JSP stránky
• Bezpečnostní role
• ...
portlet.xml
• Obsahuje informace týkající se portletů
Další „vendor specific“ deskriptory
• Např. liferay-portlet.xml – css, javascript
© 2008 IBA CZ, s.r.o.8
Portletové aplikace
© 2011 IBA CZ, s.r.o.9
portlet.xml
Obsahuje konfigurační informace přímo pro portál
Podporované módy a stavy oken
Podporované jazyky
Popis a označení portletu
Konfigurace preferencí
Veřejné parametry
Události
Filtry
A další
Životní cyklus portletu
© 2011 IBA CZ, s.r.o.10
Životní cyklus portletu
© 2011 IBA CZ, s.r.o.11
Použití portletu
© 2011 IBA CZ, s.r.o.12
Použití portletu
© 2011 IBA CZ, s.r.o.13
GenericPortlet
Standardní implementace rozhraní Portlet
Abstraktní třída, jenž je nejčastěji rozšiřována
Vlastní portlety by měly přepisovat
• doView() pro zpracování požadavků ve VIEW
módu
• processAction() pro zpracování požadavků a
změnu stavu portletu
• doEdit()
• doHelp()
• init() a destroy() pro práci se zdroji
Běžně se nepřepisují metody
• render() a
• doDispatch(), která volá doView(), doEdit() nebo
doHelp() na základě požadovaného portletového
módu
Stav portletu
© 2011 IBA CZ, s.r.o.14
Stav okna portletu (window state)
Stav okna definuje, jak bude portlet zobrazen na
stránce
• Normal – jako součást stránky
• Maximized – daný portlet je na stránce sám nebo
zabírá většinu plochy
• Minimized – většinou pouze záhlaví portletu
• Existují další stavy specifické pro konkrétní portály
Portletové módy (portlet mode)
Portletové módy umožňují zobrazení různých pohledů
• View – základní mód
• Edit – většinou pro úpravu uživatelských
nastavení
• Help – zobrazení nápovědy k portletu
• Existují další módy specifické pro konkrétní portály
– Configure – administrace portletu
Významné objekty
PortletConfig
Poskytuje portletu jeho nastavení z portlet.xml
PortletContext
Definuje pohled portletu na portletový kontejner
Inicializační parametry jsou pouze ke čtení a nastavují
se v deskriptoru web.xml
Důležité metody
getRequestDispatcher(java.lang.String path)
getInitParameter(java.lang.String name)
getInitParameterNames()
© 2008 IBA CZ, s.r.o.15
Významné objekty
© 2011 IBA CZ, s.r.o.16
PortletRequest
Vytvářeny a spravovány portletovým kontejnerem
Předávány jako argument protletovým metodám
Jsou využívány pro komunikaci mezi portletovým
kontejnerem a portletem a zároveň k předávání dat v
rámci zpracování požadavku
Data
• Parametry
• Atributy
• Relace (sezení, session)
• Preference
• Informace o uživateli
– getRemoteUser() - login uživatele (nebo id)
– Atribut USER_INFO
Map userInfo =
(Map)request.getAttribute(PortletRequest.USER_INFO);
String givenName =
(String)userInfo.get(“user.name.given”);
Významné objekty
© 2011 IBA CZ, s.r.o.17
PortletResponse
Rozhraní pro odesílání odpovědí na požadavek
encodeUrl() - Vrací zakódované URL požadovaného
zdroje (např. servlet, JSP, obrázky nebo jiný statický
obsah)
RenderResponse
create*URL() - vytváření URL
ActionResponse
sendRedirect()
setPortletMode()
setWindowState()
setRenderParameter()
setRenderParameters()
• Parametry viditelné v processAction() se
automaticky nepropagují do render()
Významné objekty
© 2011 IBA CZ, s.r.o.18
PortletPreferences
Perzistentní úložiště dat spravované kontejnerem
Výchozí hodnoty jsou definované v portlet.xml
Pro každé portletové okno se nastavují samostatně
Pro uložení dat je zapotřebí volat metodu store()
• Nelze volat během render fáze
PortletSession
Úložiště pro informace déle než na dobu jednoho
požadavku
Session se vytváří pro uživatele pro každou
portletovou aplikaci
Pozor na velikost objektů, které do session ukládáte –
velké objekty mohou mít dopad na výkonnost
getAttribute(String name)
getAttribute(String name, int scope)
setAttribute(String name, Object value)
setAttribute(String name, Object value, int scope)
• APPLICATION_SCOPE a PORTLET_SCOPE
Data se kterými portlety pracují
© 2008 IBA CZ, s.r.o.19
Knihovna značek (Tag library)
• Značky pro
– Generování odkazů
– Přístup k objektům v request a response
• Definované značky
– defineObjects
– renderURL
– actionURL
– resourceURL
– namespace
– param
© 2009 IBA CZ, s.r.o.20
Knihovna značek (Tag library)
Vytváření odkazů
Show detail
Značka
Vrací jednoznačné označení portletu
Používá se pro odlišení entit na stránce v případě,
že je na ní více stejných portletů
Využití
Javascript
Element ID
© 2009 IBA CZ, s.r.o.21
© 2011 IBA CZ, s.r.o.22
Příště
Meziportletová komunikace
Obsluha zdrojů
Filtry