Paul Nicolucci created MYFACES-4047:
---------------------------------------
Summary: @PreDestroy method not invokved on
javax.faces.bean.ViewScoped beans
Key: MYFACES-4047
URL: https://issues.apache.org/jira/browse/MYFACES-4047
Project: MyFaces Core
Issue Type: Bug
Components: JSR-344
Affects Versions: 2.2.10
Reporter: Paul Nicolucci
Priority: Minor
Consider the following scenario:
Bean1:
@Named
@ViewScoped (javax.faces.view.ViewScoped)
Bean2:
@ManagedBean
@ViewScoped (javax.faces.bean.ViewScoped)
When the session is invalidated the
org.apache.myfaces.cdi.impl.CDIManagedBeanHandlerImpl.onSessionDestroyed()
method is invoked. Here, MyFaces destroys all of the
javax.faces.view.ViewScoped @Named beans and @PreDestroy is invoked on these
beans. However, the @ManagedBean /ViewScoped bean does not have its @PreDestroy
invoked.
I believe this is because the assumption was made that if an Application is CDI
enabled it will contain all CDI @Named beans and not any @ManagedBeans. There
is also the DefaultViewScopeHandler which is not yet implemented for
"onSessionDestroyed" that would be used in the case when CDI is not enabled,
that is when only @ManagedBeans are contained in the application.
I believe it is possible to update the CDIManagedBeanHandlerImpl to be aware of
the ViewScoped ManagedBeans and destroy them onSessionDestroy first by just
getting the viewMap and iterating over the entries as we do when the
PreDestroyViewMapEvent is processed.
I'd like to use this issue to resolve the problem in CDIManagedBeanHandlerImpl
as well as implement onSessionDestroy in DefaultViewScopeHandler.java
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)