Erro TomCat 7 + JSF 2 + Primefaces

2 respostas
P

Boa Tarde estou com o seguinte erro

AVISO: Cannot serialize session attribute com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap for session 8092B827C29E7E944F6DB43135BE00E3
java.io.NotSerializableException: com.geco.model.Itens
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1001)
        at sun.reflect.GeneratedMethodAccessor217.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1001)
        at sun.reflect.GeneratedMethodAccessor217.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1001)
        at sun.reflect.GeneratedMethodAccessor217.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at java.util.HashMap.writeObject(HashMap.java:1001)
        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 java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1663)
        at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077)
        at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:411)
        at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)
        at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:497)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:222)
        at org.apache.catalina.core.StandardContext$4.call(StandardContext.java:5229)
        at org.apache.catalina.core.StandardContext$4.call(StandardContext.java:5212)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)

XHTML do DataTable

<ui:composition template="/template/template.xhtml"  
                xmlns="http://www.w3.org/1999/xhtml"  
                xmlns:p="http://primefaces.prime.com.tr/ui"  
                xmlns:f="http://java.sun.com/jsf/core"  
                xmlns:h="http://java.sun.com/jsf/html"  
                xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <ui:define name="modal">
        <h:form>
            <p:confirmDialog message="Deseja salvar o pedido de compra nº #{genSerialView.number} ?" showEffect="fade" 
                             hideEffect="fade" header="Pedido de compra" severity="alert" widgetVar="dialog">  
                <p:commandButton value="Sim" onclick="dialog.hide()" action="#{messagesController.addError}" type="button"/>  
                <p:commandButton value="Não" onclick="dialog.hide()" type="button" />   
            </p:confirmDialog>  
        </h:form>
        <h:form>
            <p:dialog header="Autorizações Pendentes" widgetVar="modal1" showEffect="fade" hideEffect="fade" height="200">  
                <h:outputText value="Em teste" />  
            </p:dialog>     
            <p:dialog header="Lista de Fornecedores" widgetVar="modal2" showEffect="fade" hideEffect="fade" height="200">  
                <h:outputText value="Em teste" />  
            </p:dialog>     
        </h:form>
    </ui:define>

    <ui:define name="top">
        <h:form>
            <h:outputText value="Pedido de compra" style="font-family: Tahoma; font-size: 30px; font-style: bold" />
            <h:panelGrid columns="2" style="margin-left: 45%;text-align: center">
                <h:outputText value="NUMERO" style="font-family: Tahoma; font-size: 15px; font-style: bold" />
                <h:outputText value="DATA" style="font-family: Tahoma; font-size: 15px; font-style: bold" />
                <h:outputText value="01/#{genSerialView.ano}" style="font-family: Tahoma; font-size: 12px; font-style: bold" />
                <h:outputText value="#{genSerialView.data}" style="font-family: Tahoma; font-size: 12px; font-style: bold" />
            </h:panelGrid>
        </h:form>
    </ui:define>

    <ui:define name="center">
        <h:form id="idid">
            <p:panel id="teste" header="Autorização / Fornecedor" toggleable="true" toggleSpeed="200">
                <h:panelGrid columns="3">
                    <h:outputText value="Referente Autorização Nº:" style="font-family: Tahoma; font-size: 11px; font-style: bold" />
                    <h:selectOneMenu value="#{itensBean.itens}"><f:selectItems value="#{itensBean.itens}"/></h:selectOneMenu>
                    <p:commandButton image="ui-icon ui-icon-extlink" onclick="modal1.show()"/> 
                    <h:outputText value="Fornecedor:" style="font-family: Tahoma; font-size: 11px; font-style: bold" />
                    <h:selectOneMenu value="#{itensBean.itens}"><f:selectItems value="#{itensBean.itens}"/></h:selectOneMenu>
                    <p:commandButton image="ui-icon ui-icon-extlink" onclick="modal2.show()"/> 
                </h:panelGrid>
            </p:panel>
            <p:panel header="Forma de pagamento" id="forma_pagamento" toggleable="true" toggleSpeed="200">
                <h:panelGrid columns="2">
                    <h:outputText value="A Vista" style="font-family: Tahoma; font-size: 11px; font-style: bold"/><h:selectBooleanCheckbox value="#{formaPagamento.avista}"><p:ajax event="change" update="forma_pagamento"/></h:selectBooleanCheckbox>
                    <h:outputText value="Parcelado" style="font-family: Tahoma; font-size: 11px; font-style: bold"/><h:selectBooleanCheckbox value="#{formaPagamento.parcelado}"><p:ajax event="change" update="forma_pagamento"/></h:selectBooleanCheckbox>
                </h:panelGrid>
                <h:panelGrid columns="2">

                    <h:outputText value="Quantidade de parcelas :" style="font-family: Tahoma; font-size: 11px; font-style: bold" rendered="#{formaPagamento.parcelado}"/>
                    <p:inputText id="parc" value="#{formaPagamento.parcelas}" rendered="#{formaPagamento.parcelado}">
                        <f:convertNumber minIntegerDigits="1" type="number" />
                    </p:inputText>

                    <h:outputText value="Previsão de inicio do pagamento :" style="font-family: Tahoma; font-size: 11px; font-style: bold" rendered="#{formaPagamento.parcelado}"/>
                    <p:calendar value="#{formaPagamento.dataPagamento}" effect="fade" effectDuration="50" rendered="#{formaPagamento.parcelado}"/>
                    <h:outputText value="Data de pagamento :" style="font-family: Tahoma; font-size: 11px; font-style: bold" rendered="#{formaPagamento.avista}"/>
                    <p:calendar value="#{formaPagamento.dataPagamento}" effect="fade" effectDuration="50" rendered="#{formaPagamento.avista}"/>
                </h:panelGrid>
            </p:panel>
        </h:form>
        <p:panel header="Cadastrar novo item" toggleable="true" toggleSpeed="200">
            <h:form id="cad">
                <h:panelGrid id="grid" columns="4" >

                    <h:outputLabel value="Quantidade : " for="txt_qtd"><p:focus for="txt_qtd" /></h:outputLabel>
                    <p:inputText id="txt_qtd" value="#{itensBean.item.quantidade}" required="true" requiredMessage="Informe a quantidade do Item !" converterMessage="Use somente NUMEROS na quantidade !"><f:convertNumber/></p:inputText>


                    <h:outputLabel value="Unidade : " for="txt_und" ></h:outputLabel>
                    <p:inputText id="txt_und" style="text-transform:uppercase" value="#{itensBean.item.und}" required="true" requiredMessage="Informe o tipo de Unidade !" />


                    <h:outputLabel value="Valor Unitário : " for="txt_valorUn"></h:outputLabel>
                    <p:inputText id="txt_valorUn" value="#{itensBean.item.valorUn}" required="true" requiredMessage="Informe o valor unitário !" converterMessage="Use somente NUMEROS no valor unitário !"><f:convertNumber/></p:inputText>


                    <h:outputLabel value="Descrição : " for="txt_desc"></h:outputLabel>

                    <p:inputTextarea autoResize="true" id="txt_desc" effectDuration="500" maxHeight="30" value="#{itensBean.item.descricao}" required="true" requiredMessage="Informe a descrição do Item !" />

                    <p:commandButton update="item:itens,val_total,grid,idid:teste,menu" image="ui-icon ui-icon-disk" value="Cadastrar " action="#{itensBean.save}" >
                        <p:collector value="#{itensBean.item}" addTo="#{itensBean.itens}" />
                    </p:commandButton>
                    <h:column></h:column>
                    <h:column></h:column>
                    <p:commandButton value="Salvar" image="ui-icon ui-icon-disk" onclick="dialog.show()" type="button" rendered="#{not empty itensBean.itens}"/>
                </h:panelGrid>
            </h:form>
        </p:panel>
        <h:form id="item">
            <p:panel toggleable="true" toggleSpeed="200" id="itens" header="Itens Cadastrados">
                <p:dataTable value="#{itensBean.itens}" var="item"  emptyMessage="Nenhum item inserido" style="text-align: center">
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Quantidade" />
                        </f:facet>
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{item.quantidade}"><f:convertNumber/></h:outputText>
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{item.quantidade}"> <f:convertNumber/></p:inputText>
                            </f:facet>
                        </p:cellEditor>

                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Unidade" />                                          
                        </f:facet>

                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{item.und}"/>
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{item.und}"/>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Descrição do Produto" />
                        </f:facet>


                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{item.descricao}" />
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{item.descricao}"/>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Valor Unitátio" />
                        </f:facet>

                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{item.valorUn}"><f:convertNumber minFractionDigits="2"/></h:outputText>
                            </f:facet>
                            <f:facet name="input">
                                <p:inputText value="#{item.valorUn}"> <f:convertNumber minFractionDigits="2"/></p:inputText>
                            </f:facet>
                        </p:cellEditor>
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Valor Total" />
                        </f:facet>
                        <h:outputText value="#{item.valorTotal}" />
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Excluir" />
                        </f:facet>

                        <p:commandButton image="ui-icon ui-icon-trash" update="item:itens,cad:grid">
                            <p:collector value="#{item}" removeFrom="#{itensBean.itens}"  />
                        </p:commandButton>

                    </p:column>

                    <p:column headerText="Alterar">
                        <p:rowEditor />
                    </p:column>

                </p:dataTable>
                <p:graphicText value=" TOTAL GERAL DO PEDIDO R$ #{itensBean.total}" fontName="Tahoma" fontSize="10" style="margin-right: 80%"/>
            </p:panel>
        </h:form>
    </ui:define>
</ui:composition>

BEAN

import java.io.Serializable;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
/**
 *
 * @author estagio.desenv
 */

@ManagedBean
@ViewScoped
public class ItensBean implements Serializable{

    private Itens item = new Itens();
    private List<Itens> itens = new ArrayList<Itens>();

    public ItensBean() {
    }

    public void save() {
        item = new Itens();
    }

    public Itens getItem() {
        return item;
    }

    public void setItem(Itens item) {
        this.item = item;
    }

    public List<Itens> getItens() {
        return itens;
    }

    public void setItens(List<Itens> itens) {
        this.itens = itens;
    }

    public String getTotal() {
        double val = 0;
        for (int x = 0; x < itens.size(); x++) {
            val += itens.get(x).getValorTot();
        }
        DecimalFormat format = new DecimalFormat("00.00");
        return format.format(val);
    }

    public String redirect(){
        return "testa_view";
    }
}

Mesmo tirando a implementação do deriazable ele da erro, aparentemente funciona normal, mas o pq do erro eu nao sei.

Desde ja fico grato

2 Respostas

K

Talvez falta o

/** * */ private static final long serialVersionUID = 1L;

e/ou talvez falta isso tbm na classe com.geco.model.Itens.

P

inseri mas mesmo assim o erro ainda persiste

Criado 10 de fevereiro de 2011
Ultima resposta 10 de fev. de 2011
Respostas 2
Participantes 2