Override no controlador do MyFaces 2.0

1 resposta
joaocarlos86

Olá pessoas,

recentemente eu baixei a versão do MyFaces 2.0 bem como o tomahawk, após isso eu sobreescrevi o Faces Sevlet (criei uma classe ArquiteturaFacesController).
Após isso quando o App sobe no container a excessão abaixo é lançada:

2:05:12,665 ERROR [[/UnPScratchWEB]] StandardWrapper.Throwable
java.lang.IllegalStateException: O aplicativo não foi iniciado corretamente na inicialização. Não foi possível encontrar Fábrica: javax.faces.application.ApplicationFactory
	at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:800)
	at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:302)
	at org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:131)
	at org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:180)
	at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:1450)
	at org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:398)
	at org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext(AbstractFacesInitializer.java:370)
	at org.apache.myfaces.webapp.MyFacesServlet.init(MyFacesServlet.java:84)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4421)
        ...

A classe que eu implementei é a seguinte:

package br.unp.arq.teste;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.myfaces.webapp.MyFacesServlet;

public class ArquiteturaFacesController extends MyFacesServlet{
	
	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws IOException, ServletException {
		System.err.println("HEHE :D");
		super.service(request, response);
	}

}

O web.xml é normal, mudei apenas o Faces Servlet (se eu colocar o default a app funciona normalmente).

Alguém pode sugerir algo?

Obrigado

1 Resposta

joaocarlos86

Pessoal,

o problema não estava com a implementação e sim com a disposição da classe.
Meus projetos obedecem a seguinte formatação:

Projeto A (Projeto WEB - gera um WAR) Com as páginas e talz
Projeto B (Projeto Utility - gera um JAR) Com minhas implementações de classes

Quando eu fazia referencia ao controlador que eu customizei o mesmo estava no projeto B, alterei o Deplyment do meu Projeto A para incluir o Jar gerado pelo Projeto B e pronto. Agora sim, funciona tudo.
O mais estranho é que no meu erro antigo eu não recebia nenhum ClassNotFoundException…
Mas beleza, o importante é que tá resolvido, caso alguém tenha o mesmo problema é só seguir essa estratégia.

joaocarlos86:
Olá pessoas,

recentemente eu baixei a versão do MyFaces 2.0 bem como o tomahawk, após isso eu sobreescrevi o Faces Sevlet (criei uma classe ArquiteturaFacesController).
Após isso quando o App sobe no container a excessão abaixo é lançada:

2:05:12,665 ERROR [[/UnPScratchWEB]] StandardWrapper.Throwable
java.lang.IllegalStateException: O aplicativo não foi iniciado corretamente na inicialização. Não foi possível encontrar Fábrica: javax.faces.application.ApplicationFactory
	at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:800)
	at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:302)
	at org.apache.myfaces.context.servlet.FacesContextImplBase.getApplication(FacesContextImplBase.java:131)
	at org.apache.myfaces.context.servlet.FacesContextImplBase.getELContext(FacesContextImplBase.java:180)
	at javax.faces.component.UIViewRoot.setLocale(UIViewRoot.java:1450)
	at org.apache.myfaces.webapp.AbstractFacesInitializer._createFacesContext(AbstractFacesInitializer.java:398)
	at org.apache.myfaces.webapp.AbstractFacesInitializer.initStartupFacesContext(AbstractFacesInitializer.java:370)
	at org.apache.myfaces.webapp.MyFacesServlet.init(MyFacesServlet.java:84)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4421)
        ...

A classe que eu implementei é a seguinte:

package br.unp.arq.teste;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.myfaces.webapp.MyFacesServlet;

public class ArquiteturaFacesController extends MyFacesServlet{
	
	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws IOException, ServletException {
		System.err.println("HEHE :D");
		super.service(request, response);
	}

}

O web.xml é normal, mudei apenas o Faces Servlet (se eu colocar o default a app funciona normalmente).

Alguém pode sugerir algo?

Obrigado

Criado 21 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 1
Participantes 1