Falha na inicialização da aplicação usando PhaseListener

5 respostas
S

Amigos, bom dia!

Estou com um problema quando tento inicializar a aplicação.

  1. Tenho um PhaseListener que criei para controlar os acessos à area restrita do portal.
  2. Configurei o PhaseListener em meu faces-config.xml
  3. Até ontem a noite tudo funcionava perfeitamente, não alterei nada… mas, agora quando tento subir a aplicação ele dá o erro abaixo.
Jan 20, 2012 11:39:28 AM org.apache.catalina.core.StandardContext listenerStart

Grave: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener

com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!

Source Document: jndi:/localhost/PortalSocioTorcedor/WEB-INF/faces-config.xml

Cause: Unable to find class ‘br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter’

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:214)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:200)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)

at java.util.concurrent.FutureTask.run(FutureTask.java:166)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:722)

Caused by: com.sun.faces.config.ConfigurationException:

Source Document: jndi:/localhost/PortalSocioTorcedor/WEB-INF/faces-config.xml

Cause: Unable to find class ‘br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter’

at com.sun.faces.config.processor.AbstractConfigProcessor.createInstance(AbstractConfigProcessor.java:248)

at com.sun.faces.config.processor.LifecycleConfigProcessor.addPhaseListeners(LifecycleConfigProcessor.java:142)

at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:115)

at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:108)

at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:133)

at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:204)

… 9 more

Meu Faces-Config.xml

<lifecycle>
        <phase-listener>br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter</phase-listener>
    </lifecycle>

Minha Classe PhaseListener

public class NavegacaoFilter implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();
        String pagina = fc.getViewRoot().getViewId();
        if (pagina.indexOf("institucional") < 0) {
            if (pagina.indexOf("login") < 0) {
                LoginController loginController = JSFViewUtil.getLoginController();
                boolean logado;
                if (loginController == null) {
                    logado = false;
                } else if (loginController.getTorcedor() != null) {
                    logado = true;
                } else {
                    logado = false;
                }
                if (!logado) {
                    try {
                        fc.getExternalContext().redirect(fc.getExternalContext().getRequestContextPath() + "/paginas/login/login.jsf");
                    } catch (IOException ioe) {
                        System.out.println("erro = " + ioe.getMessage());
                    }
                }
            }
        }
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.INVOKE_APPLICATION;
    }
    
}

Alguém tem alguma idéia do que pode estar acontecendo? Já revi as LIBs, estão todas como antes… aparentemente nada corrompido (uso a merda do Windows).

Meu ambiente de desenv, caso isso ajude, é Netbeans 7.0.1 e Tomcat 7.0.14.0

Obrigado a todos.

5 Respostas

H

Teria como colocar o pacote da sua classe?

S
package br.com.seberino.sociotorcedor.web.view.listener.login;

import br.com.seberino.sociotorcedor.web.view.login.LoginController;
import br.com.seberino.sociotorcedor.web.view.util.JSFViewUtil;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

/**
 *
 * @author Charles Seberino
 */
public class NavegacaoFilter implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();
        String pagina = fc.getViewRoot().getViewId();
        if (pagina.indexOf("institucional") < 0) {
            if (pagina.indexOf("login") < 0) {
                LoginController loginController = JSFViewUtil.getLoginController();
                boolean logado;
                if (loginController == null) {
                    logado = false;
                } else if (loginController.getTorcedor() != null) {
                    logado = true;
                } else {
                    logado = false;
                }
                if (!logado) {
                    try {
                        fc.getExternalContext().redirect(fc.getExternalContext().getRequestContextPath() + "/paginas/login/login.jsf");
                    } catch (IOException ioe) {
                        System.out.println("erro = " + ioe.getMessage());
                    }
                }
            }
        }
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.INVOKE_APPLICATION;
    }
    
}
H

Troque de:

<phase-listener>br.com.seberino.sociotorcedor.web.view.listener.NavegacaoFilter</phase-listener>

Para

<phase-listener>br.com.seberino.sociotorcedor.web.view.listener.login.NavegacaoFilter</phase-listener>
S

Garoto, que BURRADA! Neim me pergunte porque isso aconteceu, eu tava tão certo de que nada foi alterado que não me dei conta de olhar o caminho completo da classe no XML.

Resolvido… ÓBVIO NÉ?

Obrigado a TODOS, principalmente jakefrog

H

Haha, acontece mano.

As vezes o azul é vermelho até que provem o contrário! O.o

Criado 20 de janeiro de 2012
Ultima resposta 20 de jan. de 2012
Respostas 5
Participantes 2