beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rich Feit <richf...@gmail.com>
Subject Re: Removal of the servlet bean context from the httpsession for the ControlFilter
Date Tue, 10 Jan 2006 16:33:07 GMT
Just a few questions:

    - Is it valid to store a Control instance for a longer duration, and 
to put it into different bean contexts?  This would be the case for 
Control member variables in page flows.

    - What impact would this have on lifecycle?  Maybe this is only an 
issue as it relates to the question above...

Rich

Chad Schoettger wrote:

>Due to some of the issues brought to light by BEEHIVE-1028, I would like to
>propose that we remove the ability to store a session bean context in the
>HttpSession when using the ControlFilter.
>
>Here's a summary of the issue:
>
>When multiple threads within the same session hit a ControlFilter (with the
>ControlFilter's 'useSession' init param set to true).  The same
>ServletBeanContext may be used for both threads:
>
>ThreadId   Info
>------------- ------------------------------------------
>    34       onAcquire
>    34       begin dummyControlMethod
>    34       end dummyControlMethod
>    35       begin dummyControlMethod
>    34       onRelease
>    35       end dummyControlMethod
>
>Here is what happens in the ServletBeanContext:
>- A new ServletBeanContext is created and stored in the session for thread
>#34
>- The ServletBeanContext's beginContext() method is invoked and passed the
>current request and response for thread #34
>- Thread #35 sees that there is already a context in the session, grabs it
>and calls begin context with its request and response.
>- The ServletBeanContext's beginContext() method stores requests and
>responses on a Stack.
>- Now thread #34 calls ServletBeanContext().endContext() which pops the
>Stack (pops thread #35's request and response from the stack
>- Now we are at a point in which things are pretty messed up.
>
>I believe that the core issue here is that it is improper to store a bean
>context in a session, since the servlet bean context works on a per-request
>scope, but at any given time there may be multiple requests made on a single
>session.
>
>My recommendation would be to remove the ability to store the bean context
>in the session, and just create a new bean context for each request
>received. This is a fairly straightforward modification to the ControlFilter
>and will resolve this issue.
>
>Questions/Comments?
>
> - Thanks,
>     Chad
>
>  
>

Mime
View raw message