Servlet-Kontextbereich gegen globale Variable

Was ist (wenn überhaupt) der Unterschied zwischen dem Speichern einer Variablen im ServletContext und der Tatsache, dass sie nur ein öffentliches statisches Mitglied einer der Klassen ist?

Anstatt zu schreiben:

// simplified (!)
int counter = (Integer)getServletContext().getAttribute("counter");
counter++;
this.getServletContext().setAttribute("counter", counter);

Warum nicht einfach haben:

// in class MyServlet
public static int counter = 0;

// in a method somewhere
MyServlet.counter++;

(Ignorieren Sie Parallelitätsprobleme, bitte, dies ist nur ein dummes Beispiel.)

Soweit ich weiß, verhalten sich diese beiden Optionen unter Tomcat gleich. Gibt es etwas Besseres bei der Verwendung der ersten Option?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage