Problemas com escope session

0 respostas
O

Olá a todos,
Esou criando uma aplicaçao com myfaces e tomahawlk e necessito configurar meu
manager-bean de uma classe com escopo 'session’conforme o exemplo abaixo:

Fonte da Classe:


package com.asgard.framework.action;

import java.util.ArrayList;
import java.util.List;

import com.asgard.framework.util.LogClass;
import com.asgard.framework.util.Message;

public class TesteAction {
	public String nome;
	
	public List<Message> listaTeste;
	
	public TesteAction() {
		 this.listaTeste = new ArrayList<Message>();
		 
		 this.listaTeste.add(new Message("Teste 01", 1));
		 this.listaTeste.add(new Message("Teste 02", 1));
		 this.listaTeste.add(new Message("Teste 03", 1));
		 this.listaTeste.add(new Message("Teste 04", 1));
		 this.listaTeste.add(new Message("Teste 05", 1));
		 LogClass.log(this, "create");
	}
	
	public List<Message> getListaTeste() {
		LogClass.log(this, "getListaTeste");
		return this.listaTeste;
	}
	
	public void addList() {
		LogClass.log(this, "addList");
		this.listaTeste.add(new Message("Teste add", 2));
	}
}

Fonte do arquivo faces-config.xml:


<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
 <managed-bean>
  <managed-bean-name>testeAction</managed-bean-name>
  <managed-bean-class>com.asgard.framework.action.TesteAction</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
</faces-config>

Fonte do pagina testForm.jsp:


<%@ page language="java" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

<f:view>

	<html>
		<head>
			<meta http-equiv="Content-Language" content="en-us">
			<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
			<title>Asgard Sistemas</title>
			<link rel="STYLESHEET" type="text/css" href="css/common.css"/>		
		</head>

		<body topmargin="0" leftmargin="0" rightmargin="0" background="images/gif/page_bg_bege.gif" style="background-repeat: no-repeat;" >
				<h:form id="bodyFormTest">
					<t:panelGrid id="pnlTeste" width="96%" border="0" align="center">
						<t:column>
							<t:dataList id="messages"
							    styleClass="standardList"
							    var="msg"
							    value="#{testeAction.listaTeste}"
							    layout="simple"
							    rowCountVar="rowCount"
							    rowIndexVar="rowIndex">
								<f:verbatim> </f:verbatim>
							    <t:graphicImage  border="0" url="#{msg.icon}"/>
								<f:verbatim>    </f:verbatim>
							    <h:outputText value="#{msg.message}" style="font-family: Arial; font-size: 14"/>
							    <f:verbatim><br/></f:verbatim>
							</t:dataList>
						</t:column>
					</t:panelGrid>
				
					<h:commandButton value="Add" action="#{testeAction.addList}"></h:commandButton> 
				</h:form>
		</body>
	</html>
</f:view>

Fonte do pagina web.xml:


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <distributable/>
 
 <context-param>
  <param-name>javax.faces.CONFIG_FILES</param-name>
  <param-value> /WEB-INF/facesConfig.xml  </param-value>
 </context-param>
 
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.secret</param-name>
  <param-value>NzY1NDMyMTA=</param-value>
 </context-param>
 <filter>
  <filter-name>extensionsFilter</filter-name>
  <filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
  <init-param>
   <param-name>uploadMaxFileSize</param-name>
   <param-value>100m</param-value>
  </init-param>
  <init-param>
   <param-name>uploadThresholdSize</param-name>
   <param-value>100k</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>extensionsFilter</filter-name>
  <url-pattern>*.jsp</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>extensionsFilter</filter-name>
  <url-pattern>*.jsf</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>extensionsFilter</filter-name>
  <url-pattern>/faces/*</url-pattern>
 </filter-mapping>
 <listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</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>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

O meu problema ocorre quando seu colocar o valor ‘session’ no escopo do meu bean.
<managed-bean-scope>session</managed-bean-scope>
Ao carregar a página da o seguinte erro:

ERROR &#91;&#91;jsp&#93;.invoke&#40;704&#41;&#93; | Servlet.service&#40;&#41; for servlet jsp threw exception
javax.faces.el.EvaluationException&#58; Cannot get value for expression '#&#123;testeAction.listaTeste&#125;'
	at org.apache.myfaces.el.ValueBindingImpl.getValue&#40;ValueBindingImpl.java&#58;397&#41;
	at javax.faces.component.UIData.getValue&#40;UIData.java&#58;779&#41;
	at org.apache.myfaces.component.html.ext.HtmlDataTableHack.createDataModel&#40;HtmlDataTableHack.java&#58;350&#41;
	at org.apache.myfaces.component.html.ext.HtmlDataTableHack.getDataModel&#40;HtmlDataTableHack.java&#58;333&#41;
	at org.apache.myfaces.component.html.ext.HtmlDataTableHack.getRowCount&#40;HtmlDataTableHack.java&#58;75&#41;
	at org.apache.myfaces.custom.datalist.HtmlListRenderer.encodeChildren&#40;HtmlListRenderer.java&#58;107&#41;
	at javax.faces.component.UIComponentBase.encodeChildren&#40;UIComponentBase.java&#58;319&#41;
	at org.apache.myfaces.renderkit.RendererUtils.renderChild&#40;RendererUtils.java&#58;444&#41;
	at org.apache.myfaces.renderkit.RendererUtils.renderChildren&#40;RendererUtils.java&#58;427&#41;
	at org.apache.myfaces.renderkit.RendererUtils.renderChild&#40;RendererUtils.java&#58;448&#41;
	at org.apache.myfaces.renderkit.html.HtmlGridRendererBase.renderChildren&#40;HtmlGridRendererBase.java&#58;203&#41;
	at org.apache.myfaces.renderkit.html.HtmlGridRendererBase.encodeEnd&#40;HtmlGridRendererBase.java&#58;85&#41;
	at javax.faces.component.UIComponentBase.encodeEnd&#40;UIComponentBase.java&#58;331&#41;
	at javax.faces.webapp.UIComponentTag.encodeEnd&#40;UIComponentTag.java&#58;349&#41;
	at javax.faces.webapp.UIComponentTag.doEndTag&#40;UIComponentTag.java&#58;253&#41;
	at org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag&#40;UIComponentBodyTagBase.java&#58;55&#41;
	at org.apache.jsp.testForm_jsp._jspx_meth_t_panelGrid_0&#40;testForm_jsp.java&#58;1789&#41;
	at org.apache.jsp.testForm_jsp._jspx_meth_h_form_0&#40;testForm_jsp.java&#58;1737&#41;
	at org.apache.jsp.testForm_jsp._jspx_meth_f_view_0&#40;testForm_jsp.java&#58;177&#41;
	at org.apache.jsp.testForm_jsp._jspService&#40;testForm_jsp.java&#58;97&#41;
	at org.apache.jasper.runtime.HttpJspBase.service&#40;HttpJspBase.java&#58;97&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
	at org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;332&#41;
	at org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;314&#41;
	at org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;264&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;252&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;173&#41;
	at org.apache.catalina.core.ApplicationDispatcher.invoke&#40;ApplicationDispatcher.java&#58;672&#41;
	at org.apache.catalina.core.ApplicationDispatcher.processRequest&#40;ApplicationDispatcher.java&#58;463&#41;
	at org.apache.catalina.core.ApplicationDispatcher.doForward&#40;ApplicationDispatcher.java&#58;398&#41;
	at org.apache.catalina.core.ApplicationDispatcher.forward&#40;ApplicationDispatcher.java&#58;301&#41;
	at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch&#40;ServletExternalContextImpl.java&#58;415&#41;
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView&#40;JspViewHandlerImpl.java&#58;234&#41;
	at org.apache.myfaces.lifecycle.LifecycleImpl.render&#40;LifecycleImpl.java&#58;352&#41;
	at javax.faces.webapp.FacesServlet.service&#40;FacesServlet.java&#58;107&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;252&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;173&#41;
	at org.apache.catalina.core.ApplicationDispatcher.invoke&#40;ApplicationDispatcher.java&#58;672&#41;
	at org.apache.catalina.core.ApplicationDispatcher.processRequest&#40;ApplicationDispatcher.java&#58;463&#41;
	at org.apache.catalina.core.ApplicationDispatcher.doForward&#40;ApplicationDispatcher.java&#58;398&#41;
	at org.apache.catalina.core.ApplicationDispatcher.forward&#40;ApplicationDispatcher.java&#58;301&#41;
	at org.apache.jasper.runtime.PageContextImpl.doForward&#40;PageContextImpl.java&#58;703&#41;
	at org.apache.jasper.runtime.PageContextImpl.forward&#40;PageContextImpl.java&#58;670&#41;
	at org.apache.jsp.index_jsp._jspService&#40;index_jsp.java&#58;49&#41;
	at org.apache.jasper.runtime.HttpJspBase.service&#40;HttpJspBase.java&#58;97&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
	at org.apache.jasper.servlet.JspServletWrapper.service&#40;JspServletWrapper.java&#58;332&#41;
	at org.apache.jasper.servlet.JspServlet.serviceJspFile&#40;JspServlet.java&#58;314&#41;
	at org.apache.jasper.servlet.JspServlet.service&#40;JspServlet.java&#58;264&#41;
	at javax.servlet.http.HttpServlet.service&#40;HttpServlet.java&#58;802&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;252&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;173&#41;
	at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter&#40;ExtensionsFilter.java&#58;122&#41;
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter&#40;ApplicationFilterChain.java&#58;202&#41;
	at org.apache.catalina.core.ApplicationFilterChain.doFilter&#40;ApplicationFilterChain.java&#58;173&#41;
	at org.apache.catalina.core.StandardWrapperValve.invoke&#40;StandardWrapperValve.java&#58;213&#41;
	at org.apache.catalina.core.StandardContextValve.invoke&#40;StandardContextValve.java&#58;178&#41;
	at org.apache.catalina.core.StandardHostValve.invoke&#40;StandardHostValve.java&#58;126&#41;
	at org.apache.catalina.valves.ErrorReportValve.invoke&#40;ErrorReportValve.java&#58;105&#41;
	at org.apache.catalina.core.StandardEngineValve.invoke&#40;StandardEngineValve.java&#58;107&#41;
	at org.apache.catalina.connector.CoyoteAdapter.service&#40;CoyoteAdapter.java&#58;148&#41;
	at org.apache.coyote.http11.Http11Processor.process&#40;Http11Processor.java&#58;869&#41;
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection&#40;Http11BaseProtocol.java&#58;664&#41;
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket&#40;PoolTcpEndpoint.java&#58;527&#41;
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt&#40;LeaderFollowerWorkerThread.java&#58;80&#41;
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run&#40;ThreadPool.java&#58;684&#41;
	at java.lang.Thread.run&#40;Unknown Source&#41;
Caused by&#58; java.lang.IllegalArgumentException&#58; setAttribute&#58; Non-serializable attribute
	at org.apache.catalina.session.StandardSession.setAttribute&#40;StandardSession.java&#58;1251&#41;
	at org.apache.catalina.session.StandardSessionFacade.setAttribute&#40;StandardSessionFacade.java&#58;129&#41;
	at org.apache.myfaces.context.servlet.SessionMap.setAttribute&#40;SessionMap.java&#58;50&#41;
	at org.apache.myfaces.context.servlet.AbstractAttributeMap.put&#40;AbstractAttributeMap.java&#58;104&#41;
	at org.apache.myfaces.el.VariableResolverImpl$13.put&#40;VariableResolverImpl.java&#58;192&#41;
	at org.apache.myfaces.el.VariableResolverImpl.resolveVariable&#40;VariableResolverImpl.java&#58;328&#41;
	at org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable&#40;ValueBindingImpl.java&#58;569&#41;
	at org.apache.commons.el.NamedValue.evaluate&#40;NamedValue.java&#58;124&#41;
	at org.apache.commons.el.ComplexValue.evaluate&#40;ComplexValue.java&#58;140&#41;
	at org.apache.myfaces.el.ValueBindingImpl.getValue&#40;ValueBindingImpl.java&#58;378&#41;
	... 67 more

O estranho é que quando eu coloco ‘application’ ou ‘request’ no escopo funciona pefeitamente. So que eu preciso que
seja na ‘session’.

Agradeço desde ja pela atenção,
Tercio Bianchi

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Erko[/color][/size] :joia:

Criado 14 de maio de 2007
Respostas 0
Participantes 1