07.03.2013 Aufrufe

Konzeption und Realisierung einer skalierbaren ...

Konzeption und Realisierung einer skalierbaren ...

Konzeption und Realisierung einer skalierbaren ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Lars Meisegeier FH-Düsseldorf<br />

HTTP ist ein statusloses Protokoll, d.h. jeder Request wird separat behandelt. Es gibt<br />

keine Informationen über vorherige oder nachfolgende. Somit ist es dem Server nicht<br />

möglich, Anfragen zuzuordnen, weshalb alle gleich behandelt werden. Heute übliche<br />

Funktionen, wie z.B. ein virtueller Warenkorb, lassen sich so nicht realisieren.<br />

Aus diesem Gr<strong>und</strong> wurde das Konzept der Session 5 entworfen. Sendet ein Benutzer<br />

einen ersten Request an den Server, so startet dieser eine Session für ihn. Diese Session<br />

bleibt über die Request-Verarbeitung hinaus auf dem Server bestehen. Erst durch<br />

explizites Beenden durch den Benutzer oder Ablauf eines Timeouts wird die Session vom<br />

Server verworfen.<br />

Um dem Benutzer bei weiteren Requests seine Session zuordnen zu können, sendet der<br />

Server ein Cookie an den Client Browser. Dieses kann er bei nachfolgenden Requests<br />

wieder auslesen. Sollte der Browser keine Cookies akzeptieren, kann als Alternative URL-<br />

Rewriting betrieben werden (Hall/Brown 2004).<br />

Daten können somit individuell für jeden Benutzer über mehrere Requests an eine<br />

Session auf dem Server geb<strong>und</strong>en werden. Abhängig von den Nutzerzahlen <strong>und</strong><br />

Datenmengen <strong>einer</strong> Session stellt dies jedoch eine große Belastung für den Server dar.<br />

Richtlinie für die Implementierung ist daher, die Verarbeitung wenn möglich innerhalb<br />

eines Request vorzunehmen. Daten werden nur an die Session geb<strong>und</strong>en, wenn<br />

unbedingt erforderlich.<br />

Die Bearbeitung innerhalb eines Request führt u.a. zu vermehrten Datenbankzugriffen.<br />

Eine Performance-Verbesserung kann an dieser Stelle durch den Einsatz des Hibernate<br />

Level Zwei Caches erreicht werden.<br />

5.2 Hibernate <strong>und</strong> JavaServer Faces<br />

Um Objekte mittels Hibernate aus <strong>einer</strong> Datenbank zu lesen, werden entsprechende<br />

Anfragen innerhalb <strong>einer</strong> Hibernate Session durchgeführt. Sessions werden entsprechend<br />

der Vorgabe, alle Anfragen innerhalb eines Request zu bearbeiten, für jede Anfrage neu<br />

erzeugt (session-per-request) (Bauer/King 2005).<br />

Die angeforderten Objekte werden anschließend mit ihren zugehörigen Attributen zurück-<br />

gegeben. Besitzen die angeforderten Objekte Collections oder Verweise auf andere<br />

Objekte in der Datenbank, so werden diese jedoch noch nicht mitgeladen. Erst bei einem<br />

Zugriff auf sie erkennt Hibernate ihr Fehlen <strong>und</strong> lädt sie eigenständig nach. Dieses<br />

5 Der hier verwendete Begriffe der Session hat keinen Bezug zu den Hibernate Session Konzept<br />

aus Kapitel 4.3 Seite 28.<br />

33

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!