vínculo vida sesion resueltos porque podido navegación mvc inicio formularios example está este ejercicios desactivado ciclo caso bean asignar jsf mojarra

jsf - vida - No se puede crear una sesión después de que se haya confirmado la respuesta



mvc jsf example (4)

La razón es que:

  1. JSF almacena la estructura del componente de la página en HttpSession
  2. Si el contenido de la página es muy grande y la sesión no se ha creado previamente, es posible que se haya escrito alguna respuesta y que ocurra el error anterior.

Entonces, la solución es crear la sesión antes de que se imprima la página de Facelet (/ JSP). Un ejemplo crudo podría ser como:

@PostConstruct void initialiseSession() { FacesContext.getCurrentInstance().getExternalContext().getSession(true); }

/ napu

Abrir la página JSF me da la siguiente excepción:

Causado por: java.lang.IllegalStateException: no se puede crear una sesión después de que se haya confirmado la respuesta

Aquí está el código JSF:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.prime.com.tr/ui"> <h:head> <h:outputStylesheet name="master_c.css" library="css" /> <title>Quotes</title> </h:head> <h:body styleClass="venue product"> <h:form> <div id="wrapper"> <div id="content"> <h2><a href="#"><img src="/Webify/static/image/venue-large.png" /></a></h2> <ul id="calltoaction"> <li id="cta-map"><a href="#">MAP</a></li> <li id="cta-download" class="addthis_toolbox addthis_share_btn"><a href="#">qmobile</a></li> </ul> <!-- calltoaction --> <div class="sec-content"> <ul id="techspecs" class="mobile"> <li></li> <li><img height="50" width="79" alt="QMobile Kâşif" src="/Webify/static/image/mac-universal.png" /><b>QMobile</b><br />Bahara<br />Pahli baar</li> <li>Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum Lorem Ispum</li> </ul> <!-- techspecs --> <ul id="sc-reviews" class="mobile"> <li><a href="#"><img height="35" width="200" alt="Android" src="/Webify/static/image/text_android.png" /></a></li> <li><a href="#"><img height="35" width="200" alt="IPhone" src="/Webify/static/image/text_iphone.png" /></a></li> <li><a href="#"><img height="35" width="200" alt="BlackBerry" src="/Webify/static/image/text_blackberry.png" /></a></li> <li><a href="#">Find More...</a></li> </ul> <!-- sc-reviews --> </div> <div class="prim-content"> <!-- Page Heading --> <div id="sec-navigation"> <h3 style="margin-left: 10px;"></h3> </div> <div id="wall"> <!-- bricks end --> </div> <!-- wall end --> </div> </div> </div> </h:form> </h:body> </html>

Aquí está el stacktrace:

Sep 16, 2011 1:45:40 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException SEVERE: Error Rendering View[/streamfaces.xhtml] java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2734) at org.apache.catalina.connector.Request.getSession(Request.java:2244) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:899) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 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) Sep 16, 2011 1:45:40 PM com.sun.faces.context.ExceptionHandlerImpl throwIt INFO: Exception when handling error trying to reset the response. java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2734) at org.apache.catalina.connector.Request.getSession(Request.java:2244) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:899) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 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) Sep 16, 2011 1:45:40 PM com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage WARNING: JSF1087: Unable to generate Facelets error page as the response has already been committed. Sep 16, 2011 1:45:40 PM com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage SEVERE: javax.faces.FacesException: Cannot create a session after the response has been committed javax.faces.FacesException: Cannot create a session after the response has been committed at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:141) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 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) Caused by: java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java:2734) at org.apache.catalina.connector.Request.getSession(Request.java:2244) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:899) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:155) at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:175) at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) ... 19 more

¿Cómo se causa este problema y cómo puedo resolverlo? Estoy usando Mojarra 2.1.2.


Me estaba pasando a mí también.

Solía ​​tener Mojarra 2.1.13 y después de actualizarlo a 2.1.29, el problema se resolvió solo, sin ningún cambio en mi código.


Puse esto en mi web.xml para resolver el problema de una de mis aplicaciones.

<context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param>

Lo extraño es que tengo otras aplicaciones alojadas en esta misma instancia de glass fish que no requieren este vudú en el web.xml.

Quiero creer firmemente que esta no es la solución, porque no tiene ningún sentido para mí por qué esta aplicación en particular lo requiere y las otras no. Pero por ahora funciona.


[Solucionado]

Le tomó días diagnosticar este problema, pero finalmente puedo resolverlo.

En realidad, fue @ViewScoped y tiene un objeto DAO de propiedad administrada que no se serializó. Entonces, después de que se haya procesado la vista, los facetas también producen esta excepción, pero la vista JSF ya se procesó y es por eso que se mostró esta excepción.

Solución: haga que todos los objetos se @ViewScoped en el bean @ViewScoped , y marque "transitoria" que no estén serializados, como en mi caso era un objeto DAO en JSF @ViewScoped .