Issue Details (XML | Word | Printable)

Key: ICE-4459
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Ken Fyten
Reporter: Deryk Sinotte
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
ICEfaces

Page reload with concurrentDOMViews and standardRequestScope set to false creates new instance of request beans.

Created: 06/May/09 04:22 PM   Updated: 26/Apr/10 12:54 AM
Component/s: Framework
Affects Version/s: 1.8
Fix Version/s: 1.8.1

File Attachments: 1. File RequestBeanChart.TIF (97 kB)

Environment: 1.8

Affects: Documentation (User Guide, Ref. Guide, etc.)
Salesforce Case:
Case Subject Case Number
long-lived request scope does not work 00008232


 Description  « Hide
In version 1.7, when concurrentDOMViews and standardRequestScope are both set to false, a page reload would NOT cause the current request-scoped beans to be disposed and new instances of request-scoped beans to be created. Basically, request-scoped beans would hang around between reloads.

In version 1.8, using the same configuration, request-scoped beans are now disposed and new instances created. The one caveat is that if DisposableBean is implemented, the dispose() method is not called.

We need to decide between:

1) Reverting the behaviour to work like 1.7
2) Leave the existing behaviour but fix the dispose() call
3) Allow both behaviours through some kind of configuration



 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Greg Dick added a comment - 08/May/09 12:41 PM
I've restored the behavior to what it was in 1.7.2. The noticeable problem was that all request scoped objects were going out of scope on reload, but the dispose() method was not being called on any request scoped beans implementing the DisposableBean interface. This was due to a new ExternalContext always being created on reload. This has been restored in svn version: 18861.

The current behaviour matrix is attached. There seems to be an anomaly with concurrentDOMViews = true and standardRequestScope = false. It might be argued that the request scoped beans should stick around in the case of reload. Digging into this, I found that on reload an ${app}/block/disposeViews request is sent to the server first, prior to the client re-requesting the page and with concurrentDOMViews set to true, a disposeViews request actually disposes the Views as opposed to only reusing them in the concurrentDOMViews=false case. As part of this disposing the views, the externalContext is disposed. When the View is disposed, all its member variables of course are gone too. This means it would be tricky to keep the externalContext around with the request Map containing the beans. I suggest leaving the behaviour just as it is.

Greg Dick added a comment - 08/May/09 12:42 PM
Current behaviour matrix in 1.8

Krashan Brahmanjara added a comment - 18/Aug/09 04:32 AM
What about with backward-compatibility?
I got some apps created and optimized for icefaces 1.7.*, concurrentDOMViews and standardRequestScope are both set to false too.

In year 2008 everything works well but now on 1.8.1 i got performance issues. Request beans and all associated data are recreated and reloaded very often.
My navigations are based on menu actions and "navigation-case" with "redirect" (support for "back" button and history).

I don't wan't change beans scope to session and remove "redirect". Is any solution?

Krashan Brahmanjara added a comment - 18/Aug/09 04:45 AM
Behaviour from RequestBeanChart.TIF doesn't work for Icefaces 1.8.1 -case concurrentDOMViews and standardRequestScope are both set to false

Krashan Brahmanjara added a comment - 18/Aug/09 06:31 AM
Above issues are visible on 1.8.1 revison 19141 from trunk.

Ken Fyten added a comment - 19/Aug/09 05:28 PM
Krashan, please create a new JIRA for this as this one cannot be re-opened since it has already shipped with associated changes in 1.8.1. Also, you need to attach a simple test application to demonstrate the issue you are reporting to the new JIRA.

Muhammad Asad Ullah Bhatti added a comment - 26/Apr/10 12:54 AM
Hi!
I'm using iceFaces 1.8.2 and I still face the problem as "In version 1.7, when concurrentDOMViews and standardRequestScope are both set to false, a page reload would NOT cause the current request-scoped beans to be disposed and new instances of request-scoped beans to be created. Basically, request-scoped beans would hang around between reloads. "