Olá pessoal... tenho uma aplicação web onde o primeiro servlet a ser executado após o primeiro form preenchido possui uma variável boolean que representa se a criação de alguns atributos do contexto já foi efetuada.
Inicialmente seu valor é false. Ao ser executado o servlet, se esta variável é false ele inicia as variáveis do contexto da aplicação de acordo com os dados do formulário. Logo após seu valor é setado para true.
Porém, quando faço alterações no código, usando o NetBeans e dou um Run Project, ele restarta o tomcat, mas quando entro na página, ele considera a variável boolean como true.
Tentei utilizar um listener pra torná-la false quando o servlet for "destruído", mas mesmo assim não funciona. Parece que o tomcat não está coletando o lixo normalmente.
Segue abaixo meu código:public class InitServlet extends HttpServlet implements ServletContextListener{
public boolean initialized = false;
public InitServlet(){
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher dispatcher;
if(!initialized){
initContextAttributes();
dispatcher = req.getRequestDispatcher("newform.jsp");
dispatcher.forward(req, resp);
}
}
private void initContextAttributes(){
ServletContext context = getServletContext();
context.setAttribute("add_status", "on");
initialized = true;
}
public void contextInitialized(ServletContextEvent servletContextEvent) {
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
initialized = false;
}
}
Alguém sabe onde estou errando ou se há alguma coisa a se fazer quanto à coleta de lixo do tomcat?
Abraços e obrigado!!