myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Nicolucci (JIRA)" <>
Subject [jira] [Commented] (MYFACES-4047) @PreDestroy method not invokved on javax.faces.bean.ViewScoped beans on Session invalidation
Date Thu, 19 May 2016 20:04:12 GMT


Paul Nicolucci commented on MYFACES-4047:

Thanks for the feedback and additional information. I've attached another patch that uses
your suggested approach. Do we need to do anything with the FacesContext Instance since this
was already addressed within the ManagedBeanDestroyerListener.sessionDestroyed method where
the ViewScopeProvider is invoked? If the FacesContext is null then a StartupFacesContextImpl
is created, doing it again within the ViewScopeProviders would seem like a duplication of

> @PreDestroy method not invokved on javax.faces.bean.ViewScoped beans on Session invalidation
> --------------------------------------------------------------------------------------------
>                 Key: MYFACES-4047
>                 URL:
>             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

This message was sent by Atlassian JIRA

View raw message