Ugrás a tartalomhoz

Java Portlet Specification

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
(Portlet szócikkből átirányítva)

A Java Portlet Specification definiálja a portlet konténer és a portletek közötti szerződést és egy kényelmes programozási modellt nyújt a Java portlet fejlesztők számára.

A portletek webportálokba építhető UI-komponensek, melyek a portál konténerben futnak.

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álok üzemeltetőinek és felhasználóinak egyaránt, hiszen a különböző gyártók különféle interfészeket alkalmaztak. E problémák megoldására született először 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. Ezt több változat követte: a 2.0 és legújabban 3.0.

1.0-s verzió - JSR 168

[szerkesztés]

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 azaz a portlet konténer
  • a portlet és a portletkonté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

A 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 és Oracle.

2.0-s verzió - JSR 286

[szerkesztés]

A portlet specifikáció újabb változata a 2.0-s (JSR-286), több képességgel is felruházza a portleteket. Ilyen például az IPC (inter-portlet-communication), ami a portletek közti kommunikációt teszi lehetővé üzenetekkel és nyilvános render paraméterekkel. Akár két külön portlet konténer között is lehetséges a kommunikáció. Dinamikusan generált erőforrások (serveResource), valamint dinamikusan generált Axaj és JSON adatok kiszolgálását is lehetővé teszi. Itt vezették be a portletfiltereket és a listenereket is.

3.0-s verzió - JSR 362

[szerkesztés]

A portlet specifikáció harmadik változatának készítése 2013 elején kezdődött meg, és a következőket tartalmazza:.[1]

  • A JEE 7 Specifikációhoz való igazítás
  • Specifikálja, hogy az erőforrások oszthatók meg egymás között
  • Javított támogatás mobil eszközökhöz
  • Javított kliens-oldali támogatás
  • Optimalizált támogatás a Java Server Faces-hez
  • Web Socket támogatás hozzáadása
  • Porteltek igazítása az OpenSocial sztenderdhez
  • A portlet eseménykezelő képességeinek kiterjesztése
  • A WSRP specifikáció jövőbeli verzióihoz való igazítás
  • További kiterjesztések, javítások és pontosítások a JSR 286-hoz

A portlet életciklusa

[szerkesztés]

Egy szabványos JSR 168 portlet életciklusa:

  • inicializálás
  • kérések kiszolgálása
  • megszüntetés

Portlet interfész

[szerkesztés]

Minden portletnek implementálnia kell a java.portlet.Portlet interfészt, vagy öröklődnie kell egy ilyen osztályból. Egy portlet interfész a következő metódusokbó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

Megjelenítési módok

[szerkesztés]

A JSR 168 a következő 3 megjelenítési módot definiálja:

  • VIEW: a portlet jelenlegi állapotának megfelelő megjelenés
  • EDIT: a felhasználó módosíthatja a megjelenését
  • HELP: javaslatot tesz a felhasználónak a portlet használatához

Azonban ezek kiterjeszthetőek.

Ablak állapotok

[szerkesztés]
  • NORMAL: a portlet más portletekkel osztozik az adott oldalon
  • MINIMIZED: a portlet nem vagy csak kevés információt jelenít meg
  • MAXIMIZED: a portlet az egyedüli megjelenített portlet az adott oldalon

Hello World portlet

[szerkesztés]
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");
  }
}

Hello World portlet leíró

[szerkesztés]
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"+
                                "http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
             version="1.0">
   <portlet>
      <portlet-name>HelloWorldPortlet</portlet-name>
      <portlet-class>org.jboss.portlet.hello.HelloWorldPortlet</portlet-class>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>VIEW</portlet-mode>
      </supports>
      <portlet-info>
         <title>HelloWorld Portlet</title>
      </portlet-info>
   </portlet>
</portlet-app>

Megvalósítások

[szerkesztés]

Referencia implementáció:

  • Apache Pluto a JSR168 referencia implementációja

Kereskedelmi implementációk a főbb java szállítóktól:

  • Oracle Portal
  • IBM Websphere Portal
  • JBoss Portal
  • Open TextCorporation portal implementáció

Nyílt forráskódú implementációk:

  • Apache Jetspeed-2 Enterprise Portal
  • eXo Platform
  • GateIn Portal
  • uPortal
  • Liferay Portal

Jegyzetek

[szerkesztés]
  1. Archivált másolat. [2015. július 10-i dátummal az eredetiből archiválva]. (Hozzáférés: 2015. július 9.)

Források

[szerkesztés]

További információk

[szerkesztés]