[
https://issues.apache.org/jira/browse/OWB-1070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14535078#comment-14535078
]
Joe Bergmark commented on OWB-1070:
-----------------------------------
Romain I'm not sure I understand how that solves it? This problem can occur
without any involvement from conversation though I do understand that
conversations piggy back into the session.
Isn't the bottom line that if you try to lazily initialize the session, you
could be "too late" if the first request for a session scoped bean happens
after the servlet container has commited the response (which basically means it
has sent the headers).
> eager session creation configuration
> ------------------------------------
>
> Key: OWB-1070
> URL: https://issues.apache.org/jira/browse/OWB-1070
> Project: OpenWebBeans
> Issue Type: New Feature
> Components: Context and Scopes
> Affects Versions: 1.5.0
> Reporter: Mark Struberg
> Assignee: Mark Struberg
> Fix For: 1.6.0
>
>
> In OWB we try to not create any HttpSession if we do not need it. The reason
> is that we do not like to pollute the Session for e.g. resource or JAXRS
> requests. That would just blow up the memory.
> Instead we create the Session lazily. See
> {{WebContextsService#lazyStartSessionContext(boolean createSession)}}.
> The ConversationContext and thus the Session gets started whenever you use a
> @SessionScoped or @ConversationScoped bean the first time and there was no
> Session yet.
> If that is the case AFTER there was some HttpServletResponse written back to
> the client. then you will get the following Exception:
> {quote}
> IllegalStateException: Cannot create a session after the response has been
> committed.
> {quote}
> We might prevent this by starting the Session for every request. But this has
> quite a few downsides, including slowing down any request and polluting
> memory with useless Sessions.
> A possible solution would be to introduce an {{eagerSessionInitialisation}}
> config entry via openwebbeans.properties. It could have 3 options
> * {{true}} will create a Session on each request start
> * {{false}} (should be default) will use lazySessionInit as always
> * a custom String which is a regexp for requests which need an eagerly
> initialized Session. All other requests will use lazySessionInit.
> Any comment and further ideas are welcome.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)