Standardkonfiguration

Definition der Servlets und Filter

Der Portal Manager kann in den beiden Dateien web.xml und pm.xml konfiguriert werden. Diese Dateien sind im Verzeichnis WEB-INF unterhalb des Web-Applikationsverzeichnisses des Portal Managers zu finden. In der CMS-Standardinstallation lautet der Pfad (relativ zum CMS-Verzeichnis):

instance/default/webapps/PM/WEB-INF

In der Datei web.xml werden (wie in jeder anderen Web-Applikation auch) die verwendeten Servlets, Servlet-Filter etc. deklariert und deren URL-Schemata festgelegt.

Portal-Manager-Konfiguration

Die eigentliche Konfiguration des Portal Managers ist in der Datei pm.xml zu finden. In dieser Datei sind Spring-Beans konfiguriert. In der Standardkonfiguration sind die folgenden obligatorischen Beans enthalten:

  • hostConfig (com.infopark.pm.HostConfig)
    Legt fest, für welche Hosts Anfragen angenommen werden und welche Sprachen unterstützt werden, siehe auch <npspm showIfLanguage> und die Portletkonfiguration in der Datei WEB-INF/portlet.xml.

  • userManager (com.infopark.pm.user.UserManager)
    Die Benutzerverwaltung des Systems, über die der AuthenticationFilter auf Benutzerdaten zugreift.

  • portletContainer (com.infopark.pm.portlet.PortletContainer)
    Verwaltet die in der Datei WEB-INF/portlet.xml definierten Portlets und stellt diese für dynamische Inhalte bereit.

  • documentManager (com.infopark.pm.DocumentManager)
    Liefert die Inhalte für das ContentServlet. Die mitgelieferte Implementierung greift dazu auf eine konfigurierbare com.infopark.pm.DocumentSource zu.

  • permissionManager (com.infopark.pm.PermissionManager)
    Liefert dem PermissionFilter die Namen der Gruppen, die auf auszuliefernde Inhalte zugreifen dürfen. Der permissionManager ist ab Version 6.7.1 nicht mehr vorhanden, da der AuthorizationManager seine Funktion übernommen hat.

  • authorizationManager (com.infopark.pm.user.AuthorizationManager)
    Überprüft mit Hilfe der angegebenen Methoden (com.infopark.pm.user.Authorizer), ob der Benutzer auf einen Inhalt zugreifen darf.

  • templateEngine (com.infopark.pm.TemplateEngine)
    Bereitet dynamische Inhalte so vor, dass das ContentServlet das Ergebnisdokument ausrechnen kann.

  • contentHandlerMap (java.util.Map)
    Legt fest, welche Inhalte das ContentServlet wie ausliefert (statisch oder dynamisch). Je MIME-Typ kann ein Bean des Typs com.infopark.pm.doc.ContentHandler angegeben werden. Für statische und dynamische Inhalte ist jeweils eine Implementierung verfügbar.

Eine Portlet-Web-Applikation konfigurieren

Die in einer Web-Applikation enthaltenen Portlets werden in der Datei WEB-INF/portlet.xml konfiguriert. Die Datei hat den folgenden Aufbau:

<?xml version="1.0" encoding="UTF-8" ?>
<portlet-app version="1.0"
  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">
    <portlet>
      ...
    </portlet>
    ...
    <custom-portlet-mode>
      ...
    </custom-portlet-mode>
    ...
    <custom-window-state>
      ...
    </custom-window-state>
    ...
    <user-attribute>
      ...
    </user-attribute>
    ...
</portlet-app>

Die Elemente haben die folgende Bedeutung:

  • portlet konfiguriert ein Portlet
  • custom-portlet-mode konfiguriert einen über den Standard hinausgehenden Portlet-Modus wie about oder print.
  • custom-window-state konfiguriert einen über den Standard hinausgehenden Fensterstatus.
  • user-attribute definiert optionale Benutzereigenschaften, die den Portlets zur Verfügung gestellt werden.

Sicherheitseinschränkungen (security-constraint) werden vom Portal Manager nicht unterstützt.

Ein Portlet konfigurieren

Jedes Portlet wird durch ein portlet-Element konfiguriert. Im folgenden Beispiel sind die wichtigsten Elemente enthalten:

    ...
    <portlet>
        <portlet-name>example</portlet-name>
        <portlet-class>com.infopark.example.Portlet</portlet-class>
        <init-param>
            <description>my init param description</description>
            <name>host</name>
            <value>127.0.0.1</value>
        </init-param>
        <expiration-cache>0</expiration-cache>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>edit</portlet-mode>
        </supports>
        <supported-locale>en</supported-locale>
        <supported-locale>de</supported-locale>
        <resource-bundle>com.infopark.example.localizer</resource-bundle>
        <portlet-preferences>
            <preference>
                <name>readOnlyPreference</name>
                <value>foo</value>
                <value>bar</value>
                <read-only>true</read-only>
            </preference>
            <preferences-validator>com.infopark.example.Validator</preferences-validator>
        </portlet-preferences>
    </portlet>
    ...

Die Elemente haben die folgende Bedeutung:

  • portlet-name: Die Bezeichnung des Portlets. Der Bezeichner muss innerhalb der Portlet-Web-Applikation eindeutig sein. Über ihn wird das Portlet eingebunden.

  • portlet-class: Die Java-Klasse, die die Portlet-Funktionalität bereitstellt. Diese Klasse muss in einem jar-Archiv im Verzeichnis WEB-INF/lib oder als kompilierte Klasse unter WEB-INF/classes enthalten sein.

  • expiration-cache: Diese Option erlaubt dem Portal Manager, den Portletinhalt für die angegebene Anzahl von Sekunden zu cachen, d.h. in dieser Zeit nicht neu zu berechnen. Bei 0 wird diese Funktion deaktiviert, bei -1 ist endloses Caching erlaubt (bis eine Aktion ausgeführt wird).

  • init-param: Ein Konfigurationsparameter für dieses Portlet. Es können beliebig viele init-param-Elemente für ein Portlet vorhanden sein.

    • description: Optionale Beschreibung
    • name: Der Name des Parameters
    • description: Der Wert des Parameters
  • supports: Konfiguriert unterstützte MIME-Typen und Portlet-Modi:

    • mime-type: Konfiguriert einen unterstützten MIME-Typ. Je Typ wird ein Element angegeben, der MIME-Typ muss angegeben werden.
    • portlet-mode: Weitere vom Portlet unterstützte Portlet-Modi neben VIEW können hier konfiguriert werden.
  • supported-locale: Eine unterstützte Sprache. Typischerweise wird hier nur ein ISO-Kürzel für eine Sprache, optional auch ein Länderkürzel nach einem Unterstrich angegeben. Ein Portlet kann eine oder meherere Sprachen unterstützen, d.h. das Element kann mehrfach angegeben werden.

  • resource-bundle: Der Name, unter denen die Ressourcen zu finden sind (ohne die Sprache oder Endung .properties).

  • portlet-info: Alternativ zu Ressourcen können Titel, Kurztitel und Schlüsselwörter mit diesem Element auch direkt angegeben werden. Die entsprechenden Unterlemente sind: title, short-title und keywords.

  • portlet-preferences: Zu jedem Portlet können beliebig viele Voreinstellungen konfiguriert werden. Die Werte dieser Einstellungen können zur Laufzeit geändert werden, sofern die Einstellung nicht als schreibgeschützt gekennzeichnet ist. Optional kann die Überprüfung der Einstellungen mittels einer Validator-Klasse konfiguriert werden.

Die Option expiration-cache wird erst ab Version 6.5.2 unterstützt. Für Portlets mit rechenintensiver Implementierung ist diese Option eine Möglichkeit, die Performance des Portals zu verbessern.

Portlet-Modi und Fenster-Status

Ab Version 6.5.1 können Sie eigene, nicht in der JSR168-Spezifikation definierte Portlet-Modi (engl. "custom modes") oder Fenster-Status (engl. "custom states") einsetzen, indem Sie im WEB-INF-Verzeichnis der PM-Web-Applikation die Datei portlet.xml anlegen und darin Ihre eigenen Portlet-Modi und Fenster-Status deklarieren.

Beispiel:

    ...
    <custom-portlet-mode>
      <portlet-mode>preview</portlet-mode>
    </custom-portlet-mode>
    <custom-portlet-mode>
      <portlet-mode>urn:javax:portlet:mode:custom:about</portlet-mode>
    </custom-portlet-mode>
    <custom-window-state>
      <window-state>solo</window-state>
    </custom-window-state>
    ...