Zakres kontekstu serwletu a zmienna globalna
Czym (jeśli w ogóle) jest różnica między przechowywaniem zmiennej w ServletContext i po prostu jako publicznym statycznym członkiem jednej z klas?
Zamiast pisać:
// simplified (!)
int counter = (Integer)getServletContext().getAttribute("counter");
counter++;
this.getServletContext().setAttribute("counter", counter);
Dlaczego po prostu nie:
// in class MyServlet
public static int counter = 0;
// in a method somewhere
MyServlet.counter++;
(Ignoruj problemy z współbieżnością, proszę, to tylko głupi przykład)
Z tego, co mogę powiedzieć, te dwie opcje zachowują się w ten sam sposób w Tomcat. Czy jest coś lepszego w korzystaniu z pierwszej opcji?