Java Reference
In-Depth Information
{
ServletContext myContext = getServletContext();
ServletContext otherContext =
myContext.getContext("/application1");
Counter counter;
synchronized(otherContext)
{
counter = (Counter)otherContext.getAttribute("counter");
if(counter == null)
{
counter = new Counter();
otherContext.setAttribute("counter", counter);
}
}
counter.decrement();
RequestDispatcher dispatcher =
otherContext.getRequestDispatcher("/display");
dispatcher.forward(request, response);
}
}
Zur Übersetzung der Klasse DecrementServlet benötigt man klarerweise Zugriff auf die
Klasse Counter aus dem Package javacomp.servlets.application1. Wenn man mit Eclipse
arbeitet und für die beiden Web-Anwendungen zwei Projekte angelegt hat, muss man im
zweiten Projekt das erste Projekt zum Java Build Path hinzufügen. Wenn die Übersetzung
dann geklappt hat, kann man die zweite Web-Anwendung im Tomcat-Server installieren
und ausprobieren. Für das DecrementServlet haben wir kein Formular mit einem Button
vorgesehen. Um das Servlet anzusprechen, müssen wir im Browser die richtige URL ange-
ben. Falls der Browser und der Tomcat-Server wieder auf demselben Rechner ausgeführt
werden, lautet die URL wie folgt:
http://localhost:8080/application2/decrement
Das Ergebnis ist aber enttäuschend, wie Bild 12.4 zeigt.
Dies ist aber auch nicht überraschend, denn wir haben oben zwei zu überwindende Hürden
angegeben und davon erst eine überwunden. Das zweite Problem, nämlich der Zugriff auf
die Klasse Counter in der zweiten Anwendung, haben wir noch nicht zu lösen versucht.
Deshalb gibt es bei der Ausführung des DecrementServlets eine ClassNotFoundException
für die Klasse Counter. Das Problem existiert überhaupt, weil auch in diesem Fall wieder
jede Web-Komponente von einem eigenen Klassenlader geladen wird. Die Counter-Klasse,
die also vom Klassenlader der ersten Web-Anwendung geladen wurde, ist deshalb in der
zweiten Anwendung nicht au ® ndbar. Der Versuch, die Klasse Counter (natürlich im richti-
gen Package) in die zweite Anwendung mit aufzunehmen, erzeugt einen schon zuvor gese-
henen Eff ekt (s. Bild 12.5).
 
Search WWH ::




Custom Search