On Thu, Oct 17, 2013 at 8:53 PM, Howard W. Smith, Jr. <
smithh032772@gmail.com> wrote:
> Clarification: my test included session.invalidate() instead of (actual)
> session expired (via/after session timeout).
>
> will provide test (config, steps and) results in my next response to this
> thread.
>
i tested my app with latest MyFaces 2.2.0 snapshot (2013-Oct-17) with TomEE
1.6.0 snapshot (2013-Oct-10; myfaces comitter said that myfaces 2.2.0
snapshots works with this version of tomee 1.6.0 snapshot),
removed myfaces 2.1.12 JARs from tomee/lib, and dropped myfaces 2.2.0 JARs
in tomee/lib
modified one of my beans, replaced OmniFaces CDI @ViewScoped with MyFaces
2.2.0 CDI @ViewScoped (javax.faces.view.ViewScoped)
generated WAR, deployed WAR to tomee/webapps, started tomee, and started
test(ing)
- navigated to page which references (myfaces 2.2.0 CDI @ViewScoped);
@PostConstruct executed
Oct 17, 2013 7:33:56 PM jsf.orders.OrderDocumentBean init
INFO: jsf.orders.OrderDocumentBean@3273c362
- navigated away from that page (action="index.xhtml", non-null outcome);
@PreDestroy executed
Oct 17, 2013 7:34:30 PM jsf.orders.OrderDocumentBean releaseResources
INFO: jsf.orders.OrderDocumentBean@3273c362
- navigated to page which references (myfaces 2.2.0 CDI @ViewScoped)
Oct 17, 2013 7:35:22 PM jsf.orders.OrderDocumentBean init
INFO: jsf.orders.OrderDocumentBean@214e2561
- navigated away from that page (action = null outcome), bean not destroyed
(of course)
- navigated to another page (action="index.xhtml", non-null outcome), bean
destroyed
Oct 17, 2013 7:35:35 PM jsf.orders.OrderDocumentBean releaseResources
INFO: jsf.orders.OrderDocumentBean@214e2561
- navigated to page which references (myfaces 2.2.0 CDI @ViewScoped)
Oct 17, 2013 7:35:50 PM jsf.orders.OrderDocumentBean init
INFO: jsf.orders.OrderDocumentBean@28a78a2c
- pressed F5/refresh in Google Chrome, new bean created and page does not
render data anymore :(
Oct 17, 2013 7:36:11 PM jsf.orders.OrderDocumentBean init
INFO: jsf.orders.OrderDocumentBean@7af07081
- logged out user (session.invalidate() is executed, @PreDestroy not
executed to show that the beans were destroyed)
Oct 17, 2013 7:36:39 PM jsf.users.pf_UsersController logout
INFO: administrator logged out at 10/17/2013 07:36 PM
- but checked jvisualvm (heap dump) and 0/zero/no instances of CDI
@ViewScoped bean exist
OmniFaces CDI @ViewScoped[1] executes @PreDestroy on session.invalidate()
and that is what I like/expect, but MyFaces 2.2 CDI @ViewScoped
implementation is not doing the same.
so, is omnifaces (and mojarra 2.2) CDI @ViewScoped 'spec-compliant', or is
this an added feature of OmniFaces, to execute @PreDestroy before CDI
@ViewScoped bean is destroyed on session.invalidate()?
[1] https://code.google.com/p/omnifaces/issues/detail?id=201
|