struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Čustović (JIRA) <j...@apache.org>
Subject [jira] [Commented] (WW-4134) MessageStoreInterceptor java.lang.IllegalStateException if there is no session
Date Sun, 30 Jun 2013 11:45:20 GMT

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

Jan Čustović commented on WW-4134:
----------------------------------

The configuration is not important in this case but "store" interceptor with operationMode
AUTOMATIC is on top of the chain.

It is very simple to reproduce the problem. In my case there is a link mapped to /instructions
which is configured like this
{code}
<action name="instructions">
	<result type="redirect">/sw/static/instructions.pdf</result>
</action>
{code}

which forwards to another url.

Now if I open my browser and clear all sessions (or open chrome in incognito window or do
a wget) and try to open /my-app/instructions I get the above error because session is not
created yet because store interceptor is putting info in session that does not exist yet.

The workaround is to force session creation in filters before struts2 filter.

The store interceptor should check to see if session exists before trying to put/get from
it.
                
> 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.16
>
>
> 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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message