ServletContextListener não funciona

4 respostas
G

Pessoal,

Alguém aqui já implementou a interface ServletContextListener? Fiz tudo certo (eu acho) e não acontece nada, coloquei alguns prints nos métodos que não são executados nunca…

o servlet:

package br.com.apl.servlet;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * (descreva a classe aqui) 
 * @author glmelo
 * @version 1.0
 */
public class ListenerAplicacaoServlet implements ServletContextListener {
  /*
  This class acts as a listener for the ServletContext. When the servlet context
  is started an instance of Serial is created.

  When destroyed the Serial thread is stopped cleanly.
  */
   
    public void contextDestroyed(ServletContextEvent event){
      event.getServletContext().log("DESLIGOU O SERVIDOR.");
      System.out.println("DESLIGOU O SERVIDOR");
    }
   
    public void contextInitialized(ServletContextEvent event)
    {
      //start thread
      System.out.println("LIGOU O SERVIDOR. ");
      event.getServletContext().log("LIGOU O SERVIDOR. ");  
      String teste = null;
      teste.substring(0,5);
    }
  }

Tentei até provocar um erro para ver se ocorria uma exceção e nada aconteceu…

Olha meu web.xml

<web-app> 
 <description>Empty web.xml file for Web Application</description>
 <listener>
    <listener-class>
        br.com.apl.servlet.ListenerAplicacaoServlet
    </listener-class>
  </listener>

  <servlet>
    <servlet-name>TesteServlet</servlet-name>
    <servlet-class>br.com.apl.servlet.TesteServlet</servlet-class>
  </servlet>
.
.
.
.
<display-name>default-app</display-name>
</web-app>

Me parece que ta tudo certo, alguma sugestão?

4 Respostas

Fernando_Generoso_da

H

Olá. Qual IDE você está usando? Qual servidor você está usando?

G

Acho que nesse caso a IDE não fará diferença, já que eu só consigo testar a aplicação direto no servidor… não consigo nem debugar

O servidor é o Jrun 3.1 (antiguidade)

A estrutura de diretório dos servidor é assim:

servers
– default
– default-app
– web-inf
– web.xml

– demo-app
– demais aplicações…

Dentro de cada diretório de aplicação (demo-app, etc) há a mesma estrutura. Dentro da pasta default também há o web-inf. Não sei detalhadamente como ele funciona, mas minha aplicação é composta somente de servlets, dos quais eu gero um .jar e coloco dentro do diretório default-app\web-inf\lib.
Todos os servlets estão configurados dentro do web.xml que está em default-app\web-inf e foi nesse mesmo web.xml que eu configurei meu listener.

Fiz tudo certinho, provavelmente é uma configuração do JRun, mas como eu disse antes, ele é muito antigo e não tenho um suporte satisfatório…

Qualquer sugestão será bem vinda, já que esgotei todas as minhas possibilidades…

Se de tudo não conseguir, tentarei explicar o problema aqui para ver se alguém da outra sugestão, mas o listener é um recurso muito interessante e caiu como uma luva para resolver meu problema.

Valeu pessoal, me ajuda ae…

H

Oi. Bom, para começar eu te aconselharia a usar o tomcat que é bem leve ou jboss(um pouco mais pesado, porém mais completo).
Olhando o seu código, não há nada de errado aparentemente. Também te aconselharia a usar uma IDE, pois ficaria mais fácil de encontrar os erros.
Nunca usei esse JRun(nem sabia que existia).

Espero ter ajudado.

Criado 23 de fevereiro de 2010
Ultima resposta 23 de fev. de 2010
Respostas 4
Participantes 3