myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Werner Punz <werner.p...@gmail.com>
Subject Re: Programmatically redirection causes error on GAE.
Date Mon, 18 Oct 2010 15:47:02 GMT
I personally think this is not a bug of MyFaces but rather a bug in the 
underlying webcontainer which seems to prevent redirects as soon as you 
render a response.

Werner


Am 18.10.10 17:08, schrieb Nikolay Rychkov:
> Thank you.
> I will try. May be to report to JIRA?
>
> 2010/10/18 Werner Punz<werner.punz@gmail.com>
>
>> Hi this seems to be a jetty or GAE bug if you ask me probably causes by the
>> combination of already rendering something and then causing a redirect
>> within the rendering (I am not sure if this is even a bug or maybe some
>> expected behavior),
>> but try following, since it happens during render time (due to the getter)
>> try to shift it away from the render time to something in prerender, you can
>> use following mechanisms to achieve that
>>
>> a) a servlet filter which issues the redirect
>> b) a phase listern
>> c) a system event, for instance a prerender system event
>>
>> It might resolve this issue.
>>
>> Werner
>>
>> Am 17.10.10 18:56, schrieb Nikolay Rychkov:
>>
>>> *Hello Sirs,*
>>>
>>> *
>>> *
>>>
>>> *In my experimental project **http://www.agost.ru*<http://www.agost.ru>*
>>> I
>>>
>>> use redirection to main page
>>> **http://www.agost.ru/to.do*<http://www.agost.ru/to.do>
>>>
>>> * .*
>>>
>>> *I have to do it this way because user should obtain session. I use
>>> PrimeFaces to ajax login that does not work without session. *
>>>
>>> *
>>> *
>>>
>>> *Sources:*
>>>
>>> Index.xhtml:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <!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">
>>>
>>> <h:head>
>>>
>>>      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
>>>
>>>      <title</title>
>>>
>>> </h:head>
>>>
>>> <h:body>
>>>
>>>      #{redirectBean.redirect}
>>>
>>> </h:body>
>>>
>>> </html>
>>>
>>> RedirectBean:
>>>
>>>
>>>
>>> import javax.faces.bean.ManagedBean;
>>>
>>> import javax.faces.bean.RequestScoped;
>>>
>>> import javax.faces.context.FacesContext;
>>>
>>> import java.io.IOException;
>>>
>>> @ManagedBean
>>>
>>> @RequestScoped
>>>
>>> public class RedirectBean {
>>>
>>>      public String getRedirect(){
>>>
>>>          try {
>>>
>>>
>>> FacesContext.getCurrentInstance().getExternalContext().redirect("to.do");
>>>
>>>
>>>
>>>          } catch (IOException e) {
>>>
>>>              e.printStackTrace();
>>>
>>>          }
>>>
>>>          return "";
>>>
>>>      }
>>>
>>> }
>>>
>>> Part of web.xml:
>>>
>>> <welcome-file-list>
>>>
>>>          <welcome-file>index.do</welcome-file>
>>>
>>>   </welcome-file-list>
>>>
>>>      <context-param>
>>>
>>>          <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
>>>
>>>          <param-value>.xhtml</param-value>
>>>
>>>      </context-param>
>>>
>>>      <servlet-mapping>
>>>
>>>          <servlet-name>Faces Servlet</servlet-name>
>>>
>>>          <url-pattern>*.do</url-pattern>
>>>
>>>      </servlet-mapping>
>>>
>>>
>>>
>>> *Redirection works, but every time I have this error in log:*
>>>
>>> *
>>> *
>>>
>>> java.lang.IllegalStateException: STREAM
>>>
>>>                  at org.mortbay.jetty.Response.getWriter(Response.java:616)
>>>
>>>                  at
>>>
>>> javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:115)
>>>
>>>                  at
>>>
>>> org.apache.myfaces.context.servlet.ServletExternalContextImpl.getResponseOutputWriter(ServletExternalContextImpl.java:184)
>>>
>>>                  at
>>>
>>> org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase.renderView(JspViewDeclarationLanguageBase.java:154)
>>>
>>>                  at
>>>
>>> org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
>>>
>>>                  at
>>>
>>> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
>>>
>>>                  at
>>> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
>>>
>>>                  at
>>> javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>>>
>>>                  at
>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>>>
>>>                  at
>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>>>
>>>                  at
>>>
>>> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
>>>
>>>                  at
>>>
>>> com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)
>>>
>>>                  at
>>>
>>> com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247)
>>>
>>>                  at
>>>
>>> com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120)
>>>
>>>                  at
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
>>>
>>>                  at
>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
>>>
>>>                  at
>>>
>>> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>
>>>                  at
>>>
>>> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>
>>>                  at
>>>
>>> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>>>
>>>                  at
>>> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>>>
>>>                  at
>>> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
>>>
>>>                  at
>>> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
>>>
>>>                  at
>>>
>>> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
>>>
>>>                  at
>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>>
>>>                  at
>>>
>>> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
>>>
>>>                  at
>>> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>>>
>>>                  at org.mortbay.jetty.Server.handle(Server.java:326)
>>>
>>>                  at
>>> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>>>
>>>                  at
>>>
>>> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
>>>
>>>                  at
>>> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
>>>
>>>                  at
>>> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>>>
>>>                  at
>>> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>>>
>>>                  at
>>>
>>> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
>>>
>>>                  at
>>>
>>> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
>>>
>>>
>>> *Is that a bug or I do something wrong?*
>>>
>>> *Thanks in advance*
>>>
>>>
>>
>>
>



Mime
View raw message