Java Reference
In-Depth Information
Als Lösung packen wir die Class-Datei für die Klasse Counter in eine eigene Jar-Datei und
speichern diese im Verzeichnis lib (s. Bild 12.1) des Tomcat-Servers ab. Die ClassLoader
sind nämlich in einem Baum angeordnet, der in Bild 12.6 skizziert ist.
Baum der
System-ClassLoader
ClassLoader
der Jar-Dateien
von lib
ClassLoader
der 1. Web-
Komponente
ClassLoader
der 2. Web-
Komponente
Bild 12.6 Baum der Klassenlader für
Web-Anwendungen
Damit alles funktioniert, darf aber die Class-Datei für die Klasse Counter weder in der ers-
ten noch in der zweiten Web-Komponente vorhanden sein. Sie darf also nur in einer Jar-
Datei im Verzeichnis lib au auchen. Dies liegt daran, dass die Klassenlader für die Web-
Komponenten nicht genau gleich arbeiten wie bisher beschrieben. Insbesondere funktioniert
das Delegieren an den im Baum übergeordneten Klassenlader anders. Wenn also z. B. die
Klasse Counter sowohl in der ersten Web-Komponente als auch im Lib-Verzeichnis vor-
kommt, wird die Klasse Counter vom Klassenlader der ersten Web-Komponente geladen.
Wenn dann die Counter-Klasse in der zweiten Web-Anwendung benutzt wird, wird sie ent-
weder vom Klassenlader der zweiten Komponente geladen, falls sie in der zweiten Kompo-
nente enthalten ist, oder andernfalls vom Klassenlader des Verzeichnisses lib. In beiden
Fällen ist dies aber ein anderer Klassenlader als derjenige der ersten Web-Komponente. Es
funktioniert also nur dann richtig, wenn Counter in beiden Web-Anwendungen nicht vor-
kommt, denn dann wird für beide Anwendungen zum Laden von Counter derselbe Klassen-
lader, nämlich der für die Jar-Dateien in lib, benutzt.
Damit funktioniert unsere Anwendung, hat aber noch einen kleinen Schönheitsfehler. Um
dies zu verstehen, schauen wir uns das Tag <form> für den Erhöhen-Button an:
<form method="get" action="increment">
Als Aktion ist „increment“ ohne Angabe der Anwendung eingetragen. Das heißt, dass der
Browser eine vollständige URL aus der aktuellen URL und der Angabe im <form>-Tag bildet.
Nehmen wir an, dass das Formular über diese URL abgerufen wurde:
http://localhost:8080/application1/display
 
Search WWH ::




Custom Search