Область контекста сервлета против глобальной переменной
В чем (если есть) разница между хранением переменной в ServletContext и просто наличием ее в качестве открытого статического члена одного из классов?
Вместо того чтобы писать:
// simplified (!)
int counter = (Integer)getServletContext().getAttribute("counter");
counter++;
this.getServletContext().setAttribute("counter", counter);
Почему бы просто не иметь:
// in class MyServlet
public static int counter = 0;
// in a method somewhere
MyServlet.counter++;
(Игнорируйте проблемы параллелизма, пожалуйста, это просто тупой пример)
Из того, что я могу сказать, эти два варианта ведут себя одинаково под Tomcat. Есть ли что-то лучшее об использовании первого варианта?