Java Portlet Specification
A portletek a felhasználói felület olyan szoftver komponensei, amelyek egy webportálon belül kerülnek menedzselésre és megjelenítésre. Egy webportál általában több portletet is tartalmaz, a leggyakrabban alkalmazottak a következők: e-mail kliens, időjárás-előrejelzés, hírek. Egy portlet a felépítéséből adódóan könnyen testre szabható, a felhasználó által átrendezhető, módosítható.
A különböző gyártók által elkészített portletek száma rohamos növekedésnek indult, ami komoly nehézséget okozott a webportált működtetőknek és a felhasználóknak egyaránt, hiszen a különböző gyártók különféle interfészeket alkalmaztak. Ezen problémák megoldására született a JSR (Java Specification Request) 168, a Portlet specifikáció, amely lehetővé teszi a különböző portletek együttműködését, összehangolását.
A JSR 168
A JSR 168 a portletet Java alapú komponensenként definiálja, amely egy megjelenítési réteget ad az információs rendszereknek.
A JSR 168 céljai a következők:
- [futtató környezet definiálása, a portlet konténer]
- [a portlet és a portlet konténer közötti API definiálása]
- [tranziens és perzisztens adatok tárolása portletek számára]
- [szervletek és JSP beágyazásának lehetősége portletekbe]
- [portlet csomagok definiálása]
- [lehetőség bináris portletek hordozhatóságára, JSR 169 portletek esetén]
Az számítástechnikai iparág többnyire elfogadta a JSR 168-at. Többek között a következő vállalatok tagjai a JSR 168 csoportnak: Apache, ATG, Boeing, Fujitsu, IBM, Novell, Oracle.
A portlet életciklusa
Egy szabványos JSR 168 portlet életciklusa:
- [inicializálás: a portlet inicializálása]
- [kérések kiszolgálása: a különböző kérések végrehajtása]
- [megszüntetés]
Portlet interfész
Minden portletnek implementálnia kell a Portlet interfészt, vagy öröklődnie kell egy ilyen osztályból. Egy portlet interfész a következő metódusobkól áll:
- [init(PortletConfig config): portlet inicializálása, csak egyszer hívódik meg]
- [processAction(ActionRequest request, ActionResponse response): egy felhasználói kérést továbbít a portlet felé]
- [render(RenderRequest request, RenderResponse response): egy adott kérés végrehajtása]
- [destroy(): portlet megszüntetése, erőforrásainak felszabadítása]
Hello World portlet
import java.io.PrintWriter;
import java.io.IOException;
import javax.portlet.GenericPortlet;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.PortletException;
public class HelloWorldPortlet extends GenericPortlet {
/**
* A portlet a következő szöveget jeleníti meg: "Hello, World"
*/
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
PrintWriter out = response.getWriter();
out.println("Hello, World");
}
}
Hivatkozások
http://en.wikipedia.org/wiki/Portlet
http://developers.sun.com/portalserver/reference/techart/jsr168/
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-portlet.html
http://www.caucho.com/resin-3.0/portlet/tutorial/basic-hello/index.xtp