Portlets können benutzerspezifische Einstellungen (etwa zu Personalisierungszwecken) auf unterschiedliche Art speichern. Unser Portal Manager verfügt über drei Speichervarianten für solche Daten:
Im RAM
(MemoryPreferencesStorage
): Dies
ist die schnellste Methode, jedoch gehen die
gespeicherten Informationen verloren, wenn der
Application Server neu gestartet wird.
Im Dateisystem
(FilesystemPreferencesStorage
): Die
Einstellungen werden als Java-Preferences im
Home-Verzeichnis des Benutzers abgelegt, der den Trifork
gestartet hat. Bei vielen Benutzern oder wenn viele
Portlets eingesetzt werden, reichen die
Speichermöglichkeiten des Dateisystems unter Umständen
nicht aus. So kann etwa unter Linux ein Verzeichnis
höchstens 32.768 Verzeichnisse enthalten.
In einer Datenbank (DatabasePreferencesStorage) (ab Version 6.7.1): Die Speicherung der Benutzerdaten in einer Datenbank ist die flexibelste Methode, erhöht jedoch den administrativen Aufwand.
Die Speicherart kann im Property
preferencesStorage
mit Hilfe eines Beans in
der Datei pm.xml
der Portlet-Web-Applikation
spezifiziert werden. Nur eines dieser Beans darf verwendet
werden, deshalb sind im folgenden Beispiel zwei Beans
auskommentiert.
<property name="preferencesStorage"> <!-- Store in memory only. Prefs will not survive appserver restart --> <!-- bean class="com.infopark.pm.MemoryPreferencesStorage" /> --> <bean class="com.infopark.pm.FilesystemPreferencesStorage" /> <!-- Store in database table. Configure a dataSource bean --> <!-- <bean class="com.infopark.pm.DatabasePreferencesStorage"> <property name="dataSource" ref="portletPrefsDataSource"/> <property name="tableName" value="portlet_prefs"/> <property name="portletColumn" value="portlet"/> <property name="loginColumn" value="login"/> <property name="keyColumn" value="key"/> <property name="indexColumn" value="idx"/> <property name="valueColumn" value="value"/> </bean> --> </property>
Die Beans, mit denen die Benutzerdaten im RAM oder im Dateisystem abgelegt werden, haben keine konfigurierbaren Einstellungen.
Das Bean zur Speicherung der Daten in einer Datenbank
erwartet, dass die Datenquelle existiert und zugreifbar
ist. Die Datenquelle kann im Bean
com.infopark.pm.DatabasePreferencesStorage
mit
den folgenden property
-Elementen
konfiguriert werden:
dataSource
:
Referenzieren Sie mit dem Attribut ref
ein
Bean, etwa portletPrefsDataSource
, mit dem
die Klasse für den Zugriff auf die Datenquelle (der
Adapter) konfiguriert wird, etwa das folgende Bean für
den Zugriff über JDBC:
<bean id="portletPrefsDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc/portletDB</value> </property> </bean>
tableName
: Name
der Datenbanktabelle.
indexColumn
: Name
der Spalte, in der der Primärschlüssel abgelegt
wird.
keyColumn
: Name
der Spalte, in der der Name des zu speichernden Wertes
(der portlet- und benutzerspezifische Parametername)
abgelegt wird.
portletColumn
:
Name der Spalte, in der die Portlet-ID gespeichert
wird.
loginColumn
:
Name der Spalte, in der der Benutzername gespeichert
wird.
valueColumn
: Name
der Spalte, in der der Wert des Parameters abgelegt
wird.
Das Datenbank-Interface wird im Portal Manager ausschließlich vom News-Portlet verwendet. Um das Interface wie im obigen Beispiel zu nutzen, müssen die folgenden Voraussetzungen erfüllt sein:
Verfügbare Datenbank: Die
Datenbank muss eingerichtet worden sein und über die oben
spezifizierte Tabelle verfügen. Die Werte aller Spalten
außer indexColumn
sind vom Typ
VARCHAR
. Die Werte von
indexColumn
haben den Typ INT
.
Der folgende Datenbankbefehl legt eine solche Tabelle
an:
CREATE TABLE portlet_prefs ( idx INT, key VARCHAR, login VARCHAR, portlet VARCHAR, value VARCHAR )
Installierte JDBC-Treiber: Der JDBC-Treiber für Ihre Datenbank muss im Trifork-Server installiert worden sein. Sie können ihn über die Console des Servers hochgeladen.
Eingerichtete Datenquelle: Sie
benötigen im Trifork-Server eine dataSource
und eine pooledDataSource
, um über den
JDBC-Treiber auf Ihre eingerichtete Datenbank
zuzugreifen.
Sind die Datenbank und der Zugriff auf sie eingerichtet, können Sie in Ihren Portlets analog zum News-Portlet über das API des Beans die benutzerspezifischen Portlet-Einstellungen speichern und auslesen.