Pergunta

Na minha logs de Tomcat (Catalina) Estou recebendo o seguinte erro impedindo que o meu pedido de arranque:

SEVERE: Error listenerStart
24-Mar-2009 13:23:10 org.apache.catalina.core.StandardContext start
SEVERE: Context [/exampleA] startup failed due to previous errors

Eu não sei porque eu estou recebendo este. Na minha web.xml Eu tenho o seguinte

<listener>
    <listener-class>
        uk.co.a.listener.SessionListener
    </listener-class>
</listener>

<listener>
    <listener-class>
        uk.co.a.listener.SessionAttributeListener
    </listener-class>
</listener>

Quando eu comente os ouvintes inicia-se bem. O código para os listners estão abaixo:

public class SessionAttributeListener implements HttpSessionAttributeListener {
    static Log log = LogFactory.getLog(SessionAttributeListener.class.getName());

    public void attributeAdded(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeAdded to THE SESSION:" + hsbe.getName());
    }

    public void attributeRemoved(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeRemoved from THE SESSION:" + hsbe.getName());
    }

    public void attributeReplaced(HttpSessionBindingEvent hsbe) {
        log.debug("VALUE attributeReplaced in THE SESSION:" + hsbe.getName());
    }
}

e

public class SessionListener implements HttpSessionListener {

    static Log log = LogFactory.getLog(SessionListener.class.getName());

    private static int activeSessions = 0;
    public void sessionCreated(HttpSessionEvent evt)
    {
        activeSessions++;
        log.debug("No. of active sessions on:"+
                new java.util.Date()+" : "+activeSessions);
    }
    public void sessionDestroyed (HttpSessionEvent evt)
    {
        activeSessions--;
    }
} 

Porque é que este não começar? Ou onde eu posso olhar para obter mais informações?

Atualizar

Não só parece ser um problema com SessionAttributeListener de arranque. O SessionListener não estava começando-se porque o foram declarados após o

Atualizar

Houve um problema com o arquivo JAR usado. A classe para SessionAttributeListener não foi incluído. Quando foi incluído o aplicativo foi iniciado.

Atualizar

O AttributeListener não parece estar em execução. Quando é usado o código de falha. Existe uma maneira simples de verificar se um ouvinte está em execução?

Foi útil?

Solução

re sua atualização lendo "O AttributeListener não parece estar a correr. Quando é usado o código de falha. Existe uma maneira simples de verificar se um ouvinte está em execução?" você já tentou adicionar um initialiser estática? algo como

static {
log.debug("static initialiser called");
}

dessa forma a primeira vez que a classe é referenciado você deve obter um registro de log.

Outras dicas

Uma vez que acabei encontrando meu caminho para uma solução em outro lugar, eu pensei que seria útil para atualizar esta questão com essa informação.

É tudo a ver com a exceção subjacente que faz com que o temido.: Mensagem 'GRAVE listenerStart erro' não sendo registrado em qualquer lugar, e como configurar o registro para produzir a exceção

A partir aqui , há uma descrição muito clara do problema de registro e uma solução.

No meu caso eu fui para uma ainda mais corte para baixo versão, acrescentando

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].level = FINE
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web-app].handlers = java.util.logging.ConsoleHandler

para o tomcat conf / logging.properties, e substituindo / web-app com o caminho de contexto do aplicativo da Web apropriado.

E magicamente a exceção escondido apareceu e disse-me o tempo de execução Java 6 não quer saber sobre o código compilado por Java 7. embaraçoso, mas facilmente corrigido.

Isto é aplicável a Tomcat 7. Sua milhagem pode variar.

Quando você encontrar "inicialização falhou devido a erros anteriores" em seus registros do Tomcat, você quer encontrar uma exceção mais acima no log que está causando esse problema ou você precisa de registro totalmente configure dentro Tomcat tal que a exceção pode ser escrito para os logs. Depois de ter a causa raiz escrito para os seus registos, a resolução é geralmente trivial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top