Definindo valor de atributo não serializável

3 respostas
A

Estou desenvolvendo uma aplicação mas ela apresentou o seguinte stack trace:

java.lang.NullPointerException
   at financeiro.web.LancamentoBean.getListaAteHoje(LancamentoBean.java:87)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
   at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
   at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:71)
   at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
   at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
   at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
   at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:106)
   at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2226)
   at com.sun.faces.el.CompositeComponentAttributesELResolver$ExpressionEvalMap.get(CompositeComponentAttributesELResolver.java:341)
   at javax.el.MapELResolver.getValue(MapELResolver.java:196)
   at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
   at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:71)
   at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
   at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
   at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
   at com.sun.faces.application.ApplicationImpl.evaluateExpressionGet(ApplicationImpl.java:426)
   at com.sun.faces.facelets.tag.composite.InterfaceHandler.validateComponent(InterfaceHandler.java:176)
   at com.sun.faces.facelets.tag.composite.InterfaceHandler.apply(InterfaceHandler.java:122)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:89)
   at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:79)
   at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:148)
   at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyCompositeComponent(CompositeComponentTagHandler.java:348)
   at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:185)
   at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:162)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:131)
   at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:162)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:131)
   at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:162)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:131)
   at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:162)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
   at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:99)
   at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:174)
   at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:392)
   at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:363)
   at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:104)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:131)
   at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:162)
   at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:89)
   at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:94)
   at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:79)
   at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:304)
   at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:363)
   at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:342)
   at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:196)
   at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:151)
   at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:89)
   at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:79)
   at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:148)
   at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:734)
   at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:96)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
   at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
   at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
   at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:22)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
   at java.lang.Thread.run(Unknown Source)

e no eclipse aparece a seguinte info:

23/04/2011 11:20:29 javax.faces.component.UIViewRoot$ViewMap put
AVISO: Definindo valor de atributo não serializável em ViewMap (chave: lancamentoBean, classe do valor: financeiro.web.LancamentoBean).

será que tem alguma coisa errada com meu Bean?

package financeiro.web;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import financeiro.categoria.Categoria;
import financeiro.conta.Conta;
import financeiro.lancamento.Lancamento;
import financeiro.lancamento.LancamentoRN;
import financeiro.web.util.ContextoUtil;


@ManagedBean(name = "lancamentoBean")
@ViewScoped
public class LancamentoBean implements Serializable{

	private static final long serialVersionUID = -8620240686179576619L;
	
	private List<Lancamento> lista;
	private List<Lancamento> listaAteHoje ;
	private List<Lancamento> listaFuturos ;

	private List<Double> saldos= new ArrayList<Double>();
	private float saldoGeral;
	
	private Lancamento editado = new Lancamento();
	
	public LancamentoBean(){
		this.novo();
	}
	
	public void novo(){
		this.editado = new Lancamento();
		this.editado.setData(new Date(System.currentTimeMillis()));
	}

	public List<Lancamento> getListaAteHoje(){
		if(this.listaAteHoje == null){
			ContextoBean contextoBean = ContextoUtil.getContextoBean();
			Conta conta = contextoBean.getContaAtiva();
						
			Calendar hoje = new GregorianCalendar();
			
			LancamentoRN lancamentoRN = new LancamentoRN();
			this.listaAteHoje = lancamentoRN.listar(conta, null, hoje.getTime());
		}
		return this.listaAteHoje;
	}

	public List<Lancamento> getListaFuturos(){
		if(this.listaFuturos == null){
			ContextoBean contextoBean = ContextoUtil.getContextoBean();
			Conta conta = contextoBean.getContaAtiva();
			
			Calendar amanha = new GregorianCalendar();
			amanha.add(Calendar.DAY_OF_MONTH, 1);
			
			LancamentoRN lancamentoRN = new LancamentoRN();
			this.listaFuturos = lancamentoRN.listar(conta, amanha.getTime(), null);
		}
		return this.listaFuturos;
	}

	public void editar(){
		
	}
	
	public void salvar(){
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		this.editado.setUsuario(contextoBean.getUsuarioLogado());
		this.editado.setConta(contextoBean.getContaAtiva());
		LancamentoRN lancamentoRN = new LancamentoRN();
		lancamentoRN.salvar(this.editado);
		this.novo();
		this.lista = null;		
	}
	
	public void excluir(){
		LancamentoRN lancamentoRN = new LancamentoRN();
		this.editado = lancamentoRN.carregar(this.editado.getLancamento());
		lancamentoRN.excluir(this.editado);
		this.lista = null;
	}
	
	public List<Lancamento> getLista(){
		if(this.lista == null){
			ContextoBean contextoBean = ContextoUtil.getContextoBean();
			Conta conta = contextoBean.getContaAtiva();
			Calendar dataSaldo = new GregorianCalendar();
			dataSaldo.add(Calendar.MONTH, -1);
			dataSaldo.add(Calendar.DAY_OF_MONTH, -1);
			
			Calendar inicio = new GregorianCalendar();
			inicio.add(Calendar.MONTH, -1);
			
			LancamentoRN lancamentoRN = new LancamentoRN();
			this.saldoGeral = lancamentoRN.saldo(conta, dataSaldo.getTime());
			this.lista = lancamentoRN.listar(conta, inicio.getTime(), null);
			
			Categoria categoria = null;
			double saldo = this.saldoGeral;
			for(Lancamento lancamento : lista){
				categoria = lancamento.getCategoria();
				saldo = saldo + (lancamento.getValor().floatValue() * categoria.getFator());
				this.saldos.add(saldo);
			}
		}
		return this.lista;
	}
	
	public List<Double> getSaldos() {
		return saldos;
	}

	public void setSaldos(List<Double> saldos) {
		this.saldos = saldos;
	}

	public float getSaldoGeral() {
		return saldoGeral;
	}

	public void setSaldoGeral(float saldoGeral) {
		this.saldoGeral = saldoGeral;
	}

	public void setLista(List<Lancamento> lista) {
		this.lista = lista;
	}

	public Lancamento getEditado() {
		return editado;
	}

	public void setEditado(Lancamento editado) {
		this.editado = editado;
	}
}

3 Respostas

D

No Console do Eclipse é somente um aviso: Que o seu managedbean não é serializavél! Penso que o erro é devido a outro problema e não aquele aviso.

H

Oi Allan,

1 - O erro de NullPointer esta relacionado a linha 87 da sua classe LancamentoBean (tenta fazer um debug, tem alguma coisa estranha ai…)

2 - O aviso do serializável acredito que esta relacionado ao escopo do seu bean, em outras palavas, escopo de request NÃO deve implementar Serializable (apenas escopo de sessão).

Espero ter ajudado,

Roger

A

huogerac:
Oi Allan,

1 - O erro de NullPointer esta relacionado a linha 87 da sua classe LancamentoBean (tenta fazer um debug, tem alguma coisa estranha ai…)

2 - O aviso do serializável acredito que esta relacionado ao escopo do seu bean, em outras palavas, escopo de request NÃO deve implementar Serializable (apenas escopo de sessão).

Espero ter ajudado,

Roger


Então huogerac a linha 87 refere-se ao metodo excluir do meu LancamentoBean - o erro ocorre no momento em que efetuo login no sistema e ele vai acessar a principal.xhtml onde tem as listas (datatable) “#{lancamentoBean.listaAteHoje}” e “#{lancamentoBean.listaFuturos}” ou seja, nesse momento não utilizo esse metodo.
No caso do ViewScoped efetuei a alteração como me recomendou mas o erro continua.

Tem mais alguma coisa que possa estar acontecendo?

Criado 26 de abril de 2011
Ultima resposta 27 de abr. de 2011
Respostas 3
Participantes 3