Aplicação JSF não inicia!

15 respostas
Pilantra

Olá pessoal

Faz 3 dias que eu estou me matando com isso e não acho a solução. Eu configurei um servidor com Tomcat + Postgres. E quando eu faço deploy nos logs me retorno o seguinte erro:

<blockquote>SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener

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

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

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

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

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)

at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:850)

at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:724)

at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)

at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)

at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:516)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:583)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Caused by: java.lang.NullPointerException

at com.sun.faces.config.processor.ManagedBeanConfigProcessor.process(ManagedBeanConfigProcessor.java:241)

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

at com.sun.faces.config.processor.ValidatorConfigProcessor.process(ValidatorConfigProcessor.java:107)

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

at com.sun.faces.config.processor.ConverterConfigProcessor.process(ConverterConfigProcessor.java:117)

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

at com.sun.faces.config.processor.ComponentConfigProcessor.process(ComponentConfigProcessor.java:108)

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

at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:252)

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

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

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

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

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

… 25 more

</blockquote>

Pesquisei e encontrei que era pra atualizar a versão do commons-collections para a versão 3.2, mas ela já está nessa versão. Outra foi eu ter que remover todos os JSF da Sun para não conflitar com o myfacelets, mas quando eu ranco, a aplicação não encontra as classes e dá ClassNotFoundException.

Detalhe importante, na minha máquina o sistema funciona perfeitamente.

Por favor, me ajudem.

Obrigado.

15 Respostas

thiago.correa

Se você está tentando fazer deploy em outra máquina, certifique-se que o WAR/EAR gerados estejam com a estrutura correta, contendo todos os JARS necessários para rodar a aplicação

Pilantra

Você acha interessante colocar as libs da aplicação no /lib do Tomcat? Pois as libs estão todas no WEB-INF/lib da aplicação.

ralphsilver

1º - verifique se tem mais de uma api repetitiva… isso pode gerar problema de versão
2º - pelo que eu vi, parece um erro de configuração do faces-config ou do web.xml

Pilantra

Olá.

Eu dei uma olhada aqui, não tem nenhuma lib repetida. Acho que o Maven não deixa também.

Vou postar meu faces-config e web.xml, espero que seja algo bem simples, pois estou usando Spring.

<?xml version="1.0"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

	<application>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
		<variable-resolver>org.springframework.web.jsf.SpringBeanVariableResolver</variable-resolver>
		<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>

		<locale-config>
			<default-locale>pt_BR</default-locale>
		</locale-config>
	</application>

</faces-config>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<display-name>Sistema de Helpdesk para o Cidade Cancao</display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.jspx</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>classic</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>
	<filter>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
	
	<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>com.cidadecancao.filter.HibernateFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>hibernateFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

Obrigado.

ralphsilver
Pilantra:
Olá.

Eu dei uma olhada aqui, não tem nenhuma lib repetida. Acho que o Maven não deixa também.

Vou postar meu faces-config e web.xml, espero que seja algo bem simples, pois estou usando Spring.

<?xml version="1.0"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

	<application>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
		<variable-resolver>org.springframework.web.jsf.SpringBeanVariableResolver</variable-resolver>
		<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>

		<locale-config>
			<default-locale>pt_BR</default-locale>
		</locale-config>
	</application>

</faces-config>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<display-name>Sistema de Helpdesk para o Cidade Cancao</display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.jspx</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>classic</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>
	<filter>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
	
	<filter>
		<filter-name>hibernateFilter</filter-name>
		<filter-class>com.cidadecancao.filter.HibernateFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>hibernateFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

Obrigado.

Então... eu uso spring com jsf também... e parece que está bem parecido as configurações, exceto por este trecho:

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

tente tirar ele do seu web.xml

e onde ele faz a ponte com o spring

<application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
    </application>
Troca por esse trecho acima no seu faces-config.xml
Pilantra

Estava torcendo para que fosse isso mas não deu certo. Fiz as alterações e o mesmo erro persiste :frowning:

Alguma outra idéia? :frowning:

ralphsilver

Bom… parece que não está conseguindo inicializar nem as configurações… onde que vc colocou o faces-config.xml?

Pilantra

Eu deixo ele junto com o web.xml, no WEB-INF. Engraçado que local ele roda que é uma beleza.

ralphsilver

e o que vc usa pra rodar local? por acaso é algum app server (glassfish, jboss, etc)?

Pilantra

Eu uso o tomcat apenas. A única lib diferente que eu coloquei no /lib do tomcat é o driver do Postgres.

ralphsilver

huummm… agora ue fiquei em dúvida com relação ao tomcat… tipo… faz tempo qeu eu não uso ele… já tentou rodar o seu projeto em um glassfish pra ver se roda?.. tenta fazer isso… as vezes… dependendo od que vc usar do spring ele não roda no tomcat

Pilantra

O GlassFish é mais adequado para aplicações JSF? Eu não tenho muita experiência com JSF, faz pouco tempo em relação a outros frameworks.

Eu vou fazer esse teste e posto aqui os resultados. Tomara que de certo.

Valeu.

ralphsilver

na verdade esses appservers tem até a api do jsf nativa para se trabalhar… tipo… pelo menos eu acho melhor… esse seu problema eu nunca tive… e quando eu comecei com jsf eu já usava apenas glassfish…

vamos ver… se não for… qualquer coisa agente ve o código certinho porque pode ser api… como vc mesmo falou no começo

Pilantra

Olá pessoal.

Só para finalizar a thread. O sistema rodou no Glassfish mas mesmo assim ainda está meio estranho, dando uns paus estranhos na hora de salvar em algumas telas.

O que vamos fazer é instalar o Red Hat como servidor, ouvi dizer a um tempo que o Java no Debian não rodava muito bem para aplicações Web que usam JSF.

No fim, acho que não tinha nada de errado com o sistema hehe.

Agradeço aos amigos que ajudaram.

Abraços!

ralphsilver

Caso esses paus continuem… poste aí pra gente dar uma olhada…

Criado 28 de março de 2010
Ultima resposta 1 de abr. de 2010
Respostas 15
Participantes 3