Portlet
Java portlety jsou webové komponenty umožňující integraci webových aplikací a portálů. Portlety jsou používané jako výměnné komponenty uživatelského rozhraní poskytující prezentační vrstvu pro informační systém. Součinnost portálů a portletů je zajišťována pomocí API, které je definováno v Java Portlet Specification. Díky tomuto API mohou být portlety spuštěny na jakémkoliv portálu založeném na Java EE bez ohledu na jeho implementaci.
Podstata a technologie
Portlety jsou založené na technologii Java a svou podstatou jsou podobné servletům. Stejně jako servlety i portlety jsou řízené kontejnerem (portletový kontejner je „obal“ který portlety spouští, řídí jejich životní cyklus, zajišťuje prostředky potřebné pro běh portletů a poskytuje persistentní úložný prostor pro jejich nastavení). Portlet přijímá a zpracovává požadavky podle kterých pak mění svůj obsah. Obsah generovaný portletem, také nazývaný „fragment“, je kus kódu ve značkovacím jazyce (HTML, XHTML, WML). Jednotlivé fragmenty se pak mohou spojovat a dohromady tvořit portálovou stránku.
Uživatelský web-klient komunikuje s portletem pomocí standardního paradigmatu požadavek/odpověď implementovaného portálem a uživatelé tak většinou mohou interagovat s portletem stejným způsobem jako se pohybují po běžných webových stránkách.
Životní cyklus portletu
O portlet se stará a řídí ho portletový kontejner a to po celou dobu životního cyklu portletu. Každý portlet má implementované čtyři metody řídící jeho životní cyklus. Tyto metody jsou:
- init(PortletConfig config)
- processAction(ActionRequest request, ActionResponse response)
- render(RenderRequest request, RenderResponse response)
- destroy().
Inicializační metoda init(PortletConfig config) volaná ihned po tom co je instance portálu vytvořena. PortletConfig reprezentuje konfigurační data (pouze pro čtení), která jsou specifikována v portlet.xml souboru. Například zde můžeme najít inicializační parametry.
Metoda processAction(ActionRequest request, ActionResponse response) je volána při odpovědi na podnět od uživatele (například kliknutí myší na odkaz nebo odeslání formuláře). V této metodě mohou být volány i metody business komponent jako jsou JavaBeans. ActionRequest a ActionResponse jsou pod-rozhraní PortletRequest a PortletResponse. Pomocí této metody může portlet změnit své nastavení nebo perzistentní informace.
Metoda render(RenderRequest request, RenderResponse response) v životním cyklu portletu následuje po metode processAction. Obecně se dá říci, že tato metoda generuje obsah založený na aktuálním stavu portletu.
Poslední metodou je metoda destroy(). Tato metoda je volána předtím než je instance portletu „předhozena“ garbage collectoru. V této metodě se tedy provádějí „zametací“ akce, kdy dochází například k uvolňování prostředků a zdrojů.
Verze Java Portlet Specification
První verze Java Portlet Specification 1.0 byla publikována v říjnu 2003 v Java Specification Request (JSR) 168. Podle této specifikace vznikaly různé implementace. Avšak v této specifikaci byly různé nedostatky a mezery, jež tvůrci implementací řešili po svém, což vedlo k tomu, že portlety nebyly tak přenositelné, jak bylo zamýšleno.
Druhá verze Java Portlet Specification 2.0 se začala formovat od února 2006 a její finální podoba byla představena v červnu 2008. K této verzi vznikla i implementace pod OpenPortal Project nazvaná OpenPortal nebo referenční implementace od společnosti Apache Pluto.