Session Timeout im BI Publisher

Wer kennt diese Nachricht nicht, arbeitet man als Entwickler mit dem Oracle BI Publisher und wurde einige Zeit durch ein Gespräch oder Telefonat abgelenkt.

BI Publisher Session Timeout

BI Publisher Session Timeout

War es im BI Publisher 10 g noch relativ einfach, diese Zeit heraufzusetzen, gestaltet sich das in der aktuellen Version 11 g nicht ganz so einfach.
Ein erster Versuch, den Parameter Session Timeout (in seconds) über die WLS Console in der Konfiguration des Deployments zu ändern bringt jedenfalls nicht das gewünschte Ergebnis.

Session Timeout in der WLS Console

Session Timeout in der WLS Console

Dieser Wert beträgt standardmäßig 3600 (Sekunden). Da der Timeout wesentlich früher zuschlägt, zieht dieser Wert offenbar nicht. Tatsächlich findet man in der Datei web.xml folgende Einstellung (Angaben in Minuten)

<session-config>
<session-timeout>20</session-timeout>
</session-config>

Offensichtlich kommt die erste Warnung vor dem Timeout 5 Minuten bevor der Benutzer abgemeldet wird.
Die Datei web.xml befindet sich in Abhängigkeit von der installierten Version des BI Publisher an unterschiedlichen Stellen. Man muss aber nicht mühsam danach suchen, da wir die Einstellung ohnehin nicht in der Datei ändern werden.
Stattdessen werden wir einen Deployment Plan erzeugen und den gewünschten Wert dort eintragen.
Es gibt verschiedene Möglichkeiten, einen Deployment Plan zu erzeugen (Oracle JDeveloper, Oracle Enterprise Pack for Eclipse, WLS Scripting Language, WLS Console).
Wir verwenden in diesem Fall die Web Console des WLS (http://host:port/console) und rufen zunächst die Applikation des BI Publisher ( bipublisher bzw. xmlpublisher ) unter dem Punkt Deployments auf.

BI Publisher Deployment

BI Publisher Deployment

Dann wählen wir einen beliebigen Parameter, z.B. den (wirkungslosen) Session Timeout unter Configuration aus, ändern den Wert und speichern die Änderung ab. Der WLS fordert uns nun auf, einen Deployment Plan unter dem Namen Plan.xml anzulegen.

Deployment Plan

Deployment Plan

Wir akzeptieren sowohl den Namen als auch das Verzeichnis und können danach die Console schließen. Das der WebLogic Server im laufenden Betrieb eine Kopie der Plan.xml vorhält, müssen wir zunächst den Server herunterfahren, bevor wir Änderungen in der Datei vornehmen.
Bevor wir manuelle Änderungen in der Datei Plan.xml vornehmen, sollte unbedingt eine Sicherheitskopie der Datei erzeugt werden. Sind die Änderungen fehlerhaft, startet in vielen Fällen die Anwendung nicht mehr und wir können notfalls auf die Sicherheitskopie zurückgreifen.

In der Datei Plan.xml sind folgende Ergänzungen vorzunehmen:

  1. In der Sektion <variable-definition><variable>
    <name>NewSessionValue</name>
    <value>150</value>
    </variable>
  2. In der Sektion <module-override>
    <module-descriptor external=“false“>
    <root-element>web-app</root-element>
    <uri>WEB-INF/web.xml</uri>
    <variable-assignment>
    <name>NewSessionValue</name>
    <xpath>/web-app/session-config/session-timeout</xpath>
    </variable-assignment>
    </module-descriptor>

Da wir direkt im Text ändern, muss sehr sorgfältig auf die korrekte Schachtelung der Tags und die Syntax geachtet werden.
Anschließend kann der WLS wieder gestartet werden. Danach sollte man noch einmal das Deployment der Applikation in der WLS Console auf eventuelle Fehlermeldungen überprüfen.
Im Beispiel ist der Wert auf 150 Minuten gesetzt. Hier wäre es sinnvoll, zunächst mit einem kleinen Wert (z.B. 5 Minuten) zu testen. Taucht nach dieser Zeit das Fenster mit dem Warnhinweis auf, war unser Vorgehen offensichtlich erfolgreich und wir können den Wert hochsetzen.

Möglicherweise tritt bei der Aktivierung des Deployments bzw. dem Neustart des Servers folgender Fehler im Admin Server Log auf:
java.lang.ClassNotFoundException: oracle.as.scheduler.ejb.AsyncRequestBean
In der WLS Console erscheint zudem folgende Meldung:
The configuration for bipublisher is still being loaded from your last request, please wait a moment and retry.
Die Ursache besteht darin, dass die Shared Libraries bip-shared-libraries nicht auf dem Admin Server verfügbar (targeted) sind. Die Lösung besteht darin, diese Shared Libraries auch auf dem Admin Server verfügbar zu machen (siehe dazu die Oracle Support Note 2367150.1).

Ein besonderer Dank geht an meinen ehemaligen Kollegen Michael Fuhr, der diesen Lösungsvorschlag entwickelt hat.

Jürgen Menge (Der IT-Macher)

Juli 23rd, 2018 by