[ http://issues.apache.org/jira/browse/TOMAHAWK-672?page=all ]

Mario Ivankovits resolved TOMAHAWK-672.
---------------------------------------

    Fix Version/s: 1.1.5-SNAPSHOT
       Resolution: Fixed

Hi!


I added a policy configuration to customize the data being saved between 
redirects


New context configuration parameters:

org.apache.myfaces.redirectTracker.MAX_REDIRECTS - Default: 20
Number of redirects to track - required to allow the back-button to work.


org.apache.myfaces.redirectTracker.POLICY - Default: 
org.apache.myfaces.custom.redirectTracker.policy.NoopRedirectTrackPolicy

The policy used to describe which data to save between requests. This can be 
any FQN to a class implementing the RedirectTrackerPolicy.

Current implementations are:
* org.apache.myfaces.custom.redirectTracker.policy.FullRedirectTrackPolicy
Captures request beans, local and messages
* org.apache.myfaces.custom.redirectTracker.policy.MessagesRedirectTrackPolicy
Captures FacesMessages only
* org.apache.myfaces.custom.redirectTracker.policy.NoopRedirectTrackPolicy
Captures nothing (the default for JSF backward compatiblity)

> RedirectTrackerManager behavior must be disabled by default
> -----------------------------------------------------------
>
>                 Key: TOMAHAWK-672
>                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-672
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: New Component
>    Affects Versions: 1.1.5-SNAPSHOT
>            Reporter: David Delbecq
>         Assigned To: Mario Ivankovits
>             Fix For: 1.1.5-SNAPSHOT
>
>
> The redirectTrackerManager store datas it find in the request scope of 
> current request to restore them after a redirect. However, it does it 
> automatically, leading to problems at 2 levels
> 1) It has a default size of 20 redirect, meaning if you create temporary 
> objects of about 500k in your request (like an xml file to render as an 
> example) you can end up with 10M / user session, when you have about 30 
> active users at the same time (not so improbable if you have session timeout 
> of about 1h), this reach the level of 300M of datas in memory used just by 
> the TrackerManager! This is too expensive
> 2) When you design your application, you assume that what is request scope 
> stays in request scope. There is no recommendation i know of that suggest you 
> store only serializable objects in request scope. On the other hand, 
> Everything in Session scope should be serializable. By transfering datas from 
> request scope to session scope without warning (just including the 
> sandbox.jar is enough to activate this behaviour), RedirectTrackerManager is 
> breaking the specs, storing unserializable objects in session, preventing 
> serialization of the session.
> For all those reason, you should:
> 1) make the RedirectTrackerManager an optional component, not an automic 
> behaviour as soon as you include the sandbox jar. This would pervent the 
> surprise of seeing the session size explode, and take into account clustered 
> environment (in which, for already mentionned serialization reason, the 
> redirect tracker is by design broken and should not be used)
> 2) Have the redirectEntryMap field in RedirectTrackerManager marked 
> transient, to prevent serialization attempts of request scope datas.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to