Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-3.3.0.GA_P02
-
Fix Version/s: EE-4.2.0.GA, EE-3.3.0.GA_P05
-
Component/s: Framework
-
Labels:None
-
Environment:jsf 2 icefaces-ee-3.3.0.GA_P02-hsdg-12
-
Assignee Priority:P1
-
Support Case References:
Description
Customer is using patched version of P02.
The attached beans and xhtml page need to be added to @WIndowDisposed test to be used with profiler to show additional instances of @ViewScoped Beans that are being created when used in this manner.
See attached PDF that explains the problem and how to reproduce with these beans and xhtml page.
The attached beans and xhtml page need to be added to @WIndowDisposed test to be used with profiler to show additional instances of @ViewScoped Beans that are being created when used in this manner.
See attached PDF that explains the problem and how to reproduce with these beans and xhtml page.
Okay, there are two issues here.
The first issue is still triggered by JSF/Mojarra, when a ViewExpiredException is thrown (for a request that targets a discarded view). Mojarra is rendering a debug page to show what when wrong but doing so it will evaluate the EL expressions found in the page which in turn will trigger the creation of the beans referenced by the EL expressions.
The debug page is not used when the application runs in Production mode so the beans are not instantiated anymore on ViewExpiredException.
The second issue is in ICEfaces code. In EnvUtils.isICEfacesView method the view map is accessed with ViewRoot.getViewMap() which will create a new view map if one is missing for the current request. This behavior together with our dispose-window request issued on page close would generate a view that was never used.
The applied fix was to modify EnvUtils.isICEfacesView method to avoid creating a new view (and an associated view map) during a post-back.