Uploaded image for project: 'EJB 3.0'
  1. EJB 3.0
  2. EJBTHREE-849

@PrePassivate and @PostActivate callbacks not properly handled for nested SFSBS

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • AS 4.2.0 GA
    • EJB 3.0 RC9 - Patch 1
    • None
    • None

    Description

      For nested SFSBs that do not implement a remote interface, the passivation/activation callbacks are not properly invoked.

      The problem is that the invocation of StatefulBeanContext.prePassivate() and postActivate() is the responsibility of the bean cache. But, for a nested SFSB without a remote interface, the cached object is not the real context, it's a proxy (ProxiedStatefulBeanContext). The real context is separately cached as a contained element of the parent bean's context.

      So, this kind of nested bean is actually passivated/activated as part of passivation/activation of the parent bean. The callbacks should be invoked at the same time they are invoked on the parent. Currently the callbacks are invoked when the cache decides to passivate the proxy context, but the passivation of the proxy context is meaningless – it does not result in serializing the bean instance, so it is incorrect to invoke the callbacks.

      See org.jboss.ejb3.test.stateful.unit.NestedBeanUnitTestCase for a demonstration of the failure.

      Attachments

        Issue Links

          Activity

            People

              bstansbe@redhat.com Brian Stansberry
              bstansbe@redhat.com Brian Stansberry
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: