Portlet Tutorial mit Liferay

20 Juli, 2009 - 22:09

Das folgende Tutorial widmet sich der Erstellung eines einfachen Hello World Portlets. Als Portalserver kommt dabei die Opensource Software Liferay zum Einsatz. Dessen Entwickler beschreiben den Server als "...the world's leading portal and social collaboration software...". Das ist zwar natürlich stark übertrieben, aber zugegebener Maßen das Ding ist echt schon geil :)

Portal und Portlet

Aber zurück zum Thema. Damit wir mit einem konkreten Beispiel beginnen können, sollten wir erst einmal die Begriffe Portal und Portlet näher beleuchten. Die Portlet Spezifikation definiert ein Portal als webbasierte Applikation, die authentifizierten und personalisierten Zugriff auf aggregierte Inhalte bietet. Als Aggregation versteht die Spezifikation das integrieren von Inhalten von unterschiedlichen Quellen innerhalb einer Seite. Dabei können die Inhalte dem Benutzer personalisiert angeboten werden. D.h., jeder Benutzer definiert sich seine anzuzeigenden Inhalte. Eine Portalseite setzt sich somit aus mehreren Portlets zusammen.

Ein Portlet ist eine Applikation, die eine spezifische Information bzw. einen spezifischen Service anbietet. Diese kann dann innerhalb einer Portalseite verwendet werden. Die einzelnen Portlets werden vom Portlet-Container verwaltet. Die Portlets können innerhalb des Containers beliebig ein- und ausgehängt werden und stellen in Komponentenform eine Sicht auf (unterschiedliche) Informationssysteme dar. Der Inhalt eines Portlets wird auch Fragment genannt. Ein Fragment ist ein Stück Markup und bildet mit anderen Fragmenten ein komplettes Dokument.

Der angesprochene Portlet Container verwaltet den Lebenszyklus der Portlets und stellt diesen einen Kontext bereit. Er ist es, der die Anfragen entgegennimmt und an die entsprechenden Portlets verteilt. Im Gegensatz zu einem Servlet Container stellt der Portlet Container auch Logik zum persistenten Speichern der Einstellungen der einzelnen Portlets bereit. Das nachfolgende Beispiel verwendet die Portlet Spezifikation 2.0, welche im Java Community Process unter der Abkürzung JSR 286 bekannt ist.

Servlets und Portlets

Portlets und Servlets haben viele Gemeinsamkeiten, aber auch gravierende Unterschiede. Der folgende Abschnitt bemüht sich diese Parallelen und Unterschiede im Detail darzustellen.

Ein Servlet ist eine in Java geschriebene Webkomponente, die ebenfalls von einem Container verwaltet wird und dynamische Inhalte erzeugt.

Gemeinsamkeiten von Portlets und Servlets:

  • Beide sind in Java geschriebene Webkomponenten
  • Beide werden von einem Container verwaltet
  • Beide generieren dynamische Inhalte
  • Beider Lebenszyklus wird von einem Container verwaltet
  • Beide kommunizieren mit dem Client durch ein Request/Response Paradigma

Trotz der vielen Gemeinsamkeiten gibt es auch große Unterschiede:

  • Portlets generieren keine kompleten Dokumente, sondern nur Fragmente. Das Portal setzt die verschiedenen Fragmente zu kompletten Portalseiten zusammen.
  • Portlets können nur über URLs, die durch die Portlet API erzeugt wurden, angesprochen werden.
  • Clients interagieren mit einem Portlet immer über ein Portal System.
  • Portlets arbeiten und interagieren in einem bestimmten Modus (View, Edit, Help, benutzerdefiniert)
  • Portlets können mehrfach innerhalb einer Portalseite existieren
  • Portlets können Konfigurationsdaten und Anpassungsdaten persistieren
  • Portlets haben Zugriff auf Benutzerprofil Informationen

Auf Grund der Unterschiede hat man sich im Rahmen des Java Community Prozesses entschlossen, dass Portlets keine Servlets sind, sondern eine neue Komponente! Nichtsdestotrotz können Portlets auch Java Server Pages oder Servlets verwenden.

To be continued....