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 Attributrefein Bean, etwaportletPrefsDataSource, 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
indexColumnsind vom TypVARCHAR. Die Werte vonindexColumnhaben den TypINT. 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
dataSourceund einepooledDataSource, 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.