Escopo global do contexto de servlet vs variável global

O que (se houver) é a diferença entre armazenar uma variável no ServletContext e apenas tê-la como um membro estático público de uma das classes?

Em vez de escrever:

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

Por que não apenas ter:

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

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

(Ignorar problemas de concorrência, por favor, este é apenas um exemplo idiota)

Pelo que posso dizer, essas duas opções se comportam da mesma maneira no Tomcat. Existe algo melhor sobre o uso da primeira opção?

questionAnswers(2)

yourAnswerToTheQuestion