Eisbär: Session-Management und applikationsweit verfügbare Objekte

Beitrag lesen

Hallo Leute

Ich arbeite aktuell an einem Web-Projekt in Perl, welches stark objektorientiert geprägt ist.
Das Ganze ist nach dem dreischichtigen Ansatz(Datenspeicherung, Businesslogik, Darstellung) aufgebaut.

Nun fehlt mir zu Darstellung in Perl allgemeine Mechanismen für applikationsweit verfügbare Objekte und ein Session-Management.

Mit den applikationsweit verfügbaren Objeketen ist folgendes gemeint:
Mit dem Start des Web-Servers (Apache 2.x und mod_perl) soll ein Initialisierungsskript aufgerufen werden, das eine Konfiguration einliest und einige "global" verfügbare Variablen, bzw. Objektreferenzen definiert.
Diese Objekte sollen während der gesamten Laufzeit des Web-Servers, bzw. meiner Applikation für andere definerte Skripts sichtbar und zugreifbar sein. Die gesamte Applikation wird am Ende aus bestimmt 50 oder mehr Skripts (hauptsächlich Darstellungskripts basierend auf Templates) bestehen.

Weiter benötige ich so etwas wie ein Session-Objekt, wo mit den Aufruf der Anmelde-Seite eine Session-ID generiert wird. Nach erfolgreicher Anmledung wird mit der Session-ID und zusätzlichen, benutzerbezogenen Informationen das Session-Objekt erzeugt. Dieses Session-Objekt soll auch wieder über mehrere Skripte hinweg als Objektreferenz global zur verfügung stehen.

Damit soll vermieden werden, das bei jedem Skriptaufruf die umfangreichen Konfigurationsdaten und Userdaten aus der Datenbank ausgelesen werden müssen (Performanceproblem). Darum sollen diese Objekte irgendwie einen globalen Scope über viele unterschiedliche Skriptaufrufe haben.

So in der Art:
   $application.getConfigfile();
oder
   $session.getUsername($sid);

Ist so etwas in Perl (zusammen mit Apache 2 und mod_perl) zu realisieren?

Bisher weiss ich von Perl nur, dass die Verfügbarkeit der Objekte durch den Scope des aufrufenden Skript beschränkt wird, da für jeden Skriptaufruf ein eigener Prozess gestartet wird.
Gibt es die Möglichkeit solche Objekte in den Speicherbereich des Apache-Prozesses zu verlagern?

Hat jemand Ideen, wie solche Anforderungen in Perl mit Apache umgesetzt werden können?
In Web-Application-Server stehen solche Mechanismen zur Verfügung (siehe WebObject, ASP, andere).
Grundsätzlich müsste dies doch auch mit Perl gehen.
Die Frage ist nur wie?

Ich freu mich schon auf Antworten ;-)

Grüsse
Eisbär