Java Reference
In-Depth Information
Dispatcher-Objekt dann die Methode forward aufru (vom Request-Parameter könnte man
sich den RequestDispatcher alternativ auch beschaff en).
Das Servlet zum Zurücksetzen ist sehr ähnlich und muss deshalb nicht auch in einem Lis-
ting dargestellt werden.
Um die Anwendung auszuführen, muss man die Vorgaben bezüglich der Verzeichnisstruk-
tur aus Abschnitt 12.2.1 einhalten, wobei im Verzeichnis WEB-INF eine Datei namens
web.xml existieren muss. Wie diese Datei im einfachsten Fall aussehen kann, wurde in
Abschnitt 12.2.2 beschrieben. Wenn alle diese Vorgaben eingehalten werden, sollte einer
Ausführung dieser Web-Komponente nichts mehr entgegenstehen.
Zum Abschluss dieses Kapitels soll noch auf einen möglichen Eff ekt hingewiesen werden,
der sich durch Parallelität ergeben kann: Wenn ein Thread, der für die Bearbeitung eines
bestimmten HTTP-Kommandos zuständig ist, den Zählerwert auf einen bestimmten Wert n
setzt (durch Aufruf der Methoden increment oder reset), dann ist nicht sicher, dass der im
Anschluss vom selben Thread gelesene Wert (durch Aufruf der Methode get), der auf die
Web-Seite geschrieben wird, immer noch n ist. Mit anderen Worten: Man kann sich nicht
sicher sein, dass der auf der Web-Seite zu sehende Zählerwert von der unmittelbar voraus-
gegangenen, eigenen Aktion gesetzt wurde. Dies liegt daran, dass zwischen dem Ändern
(increment und reset) und dem Lesen (get) der Zähler durch andere parallel laufende
Threads erneut geändert worden sein könnte. Beim Erhöhen fällt das in der Regel nicht auf,
da man nicht weiß, welchen Wert der Zähler zu Beginn einer Aktion tatsächlich hat (dieser
Sachverhalt wurde oben schon diskutiert). Es könnte aber auff allen, wenn nach einem Drü-
cken auf den Erhöhen-Button der Wert 0 erscheint. Hier würde man naiverweise davon
ausgehen, dass (solange das Erniedrigen noch nicht möglich ist) der Wert nach einer Erhö-
hung immer mindestens 1 sein muss. Ebenso könnte es beim Zurücksetzen dazu kommen,
dass in der Antwortseite nicht 0, sondern ein größerer Wert erscheint. Es wäre möglich, den
Programmcode so zu ändern, dass dieser Eff ekt verhindert und garantiert wird, dass immer
der Wert zu sehen ist, der von der eigenen Aktion gesetzt wurde. Da dies aber im Kontext
dieses Buches nicht relevant ist, soll darauf verzichtet werden.
124 Zweite Beispielkomponente
Nach meiner persönlichen Erfahrung sind die einzelnen Web-Komponenten, die sich auf
einem Web-Server befi nden, unabhängig voneinander. Das heißt: Sie kennen sich nicht,
benutzen sich nicht und funktionieren vollkommen unabhängig voneinander. Wie in jedem
Komponentensystem ist es aber auch bei Servlets möglich, dass eine Komponente eine
andere benutzt. Als zugegebenermaßen etwas künstliches Beispiel soll durch eine weitere
Beispielkomponente ermöglicht werden, den Zähler auch wieder zu erniedrigen (die Methode
decrement wurde zu diesem Zweck in der Klasse Counter in Listing 12.2 bereits vorgese-
hen). In der Implementierung müssen zwei Hürden überwunden werden:
1. Es muss von der zweiten Komponente aus auf das Counter-Objekt zugegriff en werden.
Dieses Counter-Objekt ist im ServletContext der ersten Anwendung gespeichert. Die
zweite Anwendung hat aber ihren eigenen ServletContext.
 
Search WWH ::




Custom Search