struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4134) MessageStoreInterceptor java.lang.IllegalStateException if there is no session
Date Tue, 27 Oct 2015 07:51:27 GMT

    [ https://issues.apache.org/jira/browse/WW-4134?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14975904#comment-14975904
] 

Lukasz Lenart commented on WW-4134:
-----------------------------------

[~rholguin] I think this never worked properly - {{redirectAction}} is using {{HttpServletResponse.sendRedirect()}}
method which means the response is always committed when the {{MessageStoreInterceptor}} does
its job in {{after}} handler - and in such case it cannot be used to modify a session (and
the response)

> MessageStoreInterceptor java.lang.IllegalStateException if there is no session
> ------------------------------------------------------------------------------
>
>                 Key: WW-4134
>                 URL: https://issues.apache.org/jira/browse/WW-4134
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Interceptors
>    Affects Versions: 2.3.14.3
>            Reporter: Jan Čustović
>             Fix For: 2.3.25
>
>
> When there is no session the following error happens on {code:xml}<result type="redirect">{code}.
> {code}
> [org.apache.struts2.dispatcher.Dispatcher.error:38] []  - Exception occurred during processing
request: Cannot create a session after the response has been committed
> java.lang.IllegalStateException: Cannot create a session after the response has been
committed
>         at org.apache.catalina.connector.Request.doGetSession(Request.java:2880) ~[catalina.jar:7.0.37]
>         at org.apache.catalina.connector.Request.getSession(Request.java:2315) ~[catalina.jar:7.0.37]
>         at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:898)
~[catalina.jar:7.0.37]
>         at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
~[servlet-api.jar:na]
>         at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
~[servlet-api.jar:na]
>         at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
~[servlet-api.jar:na]
>         at org.apache.struts2.dispatcher.SessionMap.put(SessionMap.java:177) ~[struts2-core-2.3.14.3.jar:2.3.14.3]
>         at org.apache.struts2.interceptor.MessageStoreInterceptor.after(MessageStoreInterceptor.java:279)
~[struts2-core-2.3.14.3.jar:2.3.14.3]
>         at org.apache.struts2.interceptor.MessageStoreInterceptor.intercept(MessageStoreInterceptor.java:195)
~[struts2-core-2.3.14.3.jar:2.3.14.3]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
~[xwork-core-2.3.14.3.jar:2.3.14.3]
> {code}
> This always happens if you wget your resource that has redirect.
> The interceptor should check if the session is available and only then perform message
storing.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message