Details
Description
Scenario from customer:
"We use remoting to access some of our services in our application. In some authentication scenarios, a session is created and invalidated for each remoting call. This does not involve JSF in any way but ICEfaces does register a SessionExpiredListener that fires up when session activity occurs and, in particular, when the session is invalidated.
This is where we hit a problem. This triggers a call to the SessionExpiredListener.sessionDestroyed() in icefaces-3.0.0.jar which, in turn, calls WindowScopeManager.disposeWindow(). There, we try to get a session attribute which turns out to be null (my guess: because no UI was involved in the remote call made). The next two calls to notifyPreDestroyForAll() do not seem to anticipate that the variable state can be null and therefore fails.
I think that the code should be adjusted to make the disposeWindows method handle cases where requests are not coming from the ICEfaces UI. The application keeps working but the following gets logged each time a remoting call is made because of this:
2012-02-22 11:12:30:736 WARNING 'An exception occurred while trying to invoke @PreDestroy on window scoped beans: null' org.icefaces.impl.application.SessionExpiredListener sessionDestroyed"
"We use remoting to access some of our services in our application. In some authentication scenarios, a session is created and invalidated for each remoting call. This does not involve JSF in any way but ICEfaces does register a SessionExpiredListener that fires up when session activity occurs and, in particular, when the session is invalidated.
This is where we hit a problem. This triggers a call to the SessionExpiredListener.sessionDestroyed() in icefaces-3.0.0.jar which, in turn, calls WindowScopeManager.disposeWindow(). There, we try to get a session attribute which turns out to be null (my guess: because no UI was involved in the remote call made). The next two calls to notifyPreDestroyForAll() do not seem to anticipate that the variable state can be null and therefore fails.
I think that the code should be adjusted to make the disposeWindows method handle cases where requests are not coming from the ICEfaces UI. The application keeps working but the following gets logged each time a remoting call is made because of this:
2012-02-22 11:12:30:736 WARNING 'An exception occurred while trying to invoke @PreDestroy on window scoped beans: null' org.icefaces.impl.application.SessionExpiredListener sessionDestroyed"
Fix Version/s: EE-3.0.0.GA_P01
3.1
(was: 3.2)
Resolution: Fixed