# Was genau heisst ServletContext?



## sirbender (22. Dez 2009)

Ich habe gerade Servlet Essentials - Chapter 3 gelesen. Darin steht das Servlets im selben ServletContext Daten untereinander teilen koennen.

Was heisst aber ServletContext? Sind das alle Servlets die in einem WAR, also einer Webapplikation deployt werden? Servlets aus unterschiedlichen Webapplikationen koennen nicht kommunizieren?


----------



## Final_Striker (23. Dez 2009)

schau mal hier: Der ServletContext


----------



## sirbender (23. Dez 2009)

So richtig klar ist es mir immer noch nicht weill auch bei dem Link unsauber formuliert wurde:

Zitat: Laufen auf einem ServletContainer mehrere Applikationen haben diese einen gemeinsamen Context.

Laut Zitat koennen die Servlets mehrerer Applikationen einen gemeinsamen Context. Laut meiner Tests schaffe ich genau das naemlich nicht.


----------



## JohannisderKaeufer (23. Dez 2009)

: Interface ServletContext

Die Java-Api finde ich recht aussagekräftig. Servlets einer Web-Application (.war) teilen sich einen ServletContext.
Ein "Globaler Kontext" für alle Servlets würde einen erheblichen Rattenschwanz nach sich ziehen.
Es muß sichergestellt werden das unabhängige web-Anwendungen die zufälligerweise ein gleichbenanntes Atribut mit sich führen (z.B. users) auch unabhängig voneinander arbeiten können.

Was passiert wenn eine Anwendung undeployed wird. Bleibt der Context erhalten, weil ihn eine Anwendung momentan braucht? Weil ihn eine zukünftige Anwendung brauchen könnte? Weil ihn die Anwendung nach einem Redeployment wieder haben möchte? Oder soll sich der ServletContainer darum kümmern und GC?

[DUKE]There is one context per "web application" per Java Virtual Machine. (A "web application" is a collection of servlets and content installed under a specific subset of the server's URL namespace such as /catalog  and possibly installed via a .war file.)
[/DUKE]
[DUKE]
In the case of a web application marked "distributed" in its deployment descriptor, there will be one context instance for each virtual machine. In this situation, the context cannot be used as a location to share global information (because the information won't be truly global). Use an external resource like a database instead. [/DUKE]

Was ich mir vorstellen könnte wäre etwas per JNDI zu hinterlegen. Aber dafür ist es mir um halb 5 zu früh.


----------

