@Override
    void atEnlist(ContainerTx tx, BeanO bean)
    {
        final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
        if (isTraceOn && tc.isEntryEnabled())
            Tr.entry(tc, "atEnlist (" + tx + ", " + bean + ")");

        // Get the current ContainerAS
        ContainerAS as = ContainerAS.getContainerAS(tx);

        // Allow the parent to properly enlist the bean in the transaction.
        // Really, just takes a pin, as processTxContextChange did the enlist.
        super.atEnlist(tx, bean);

        // If there is an AS, then perform any ActivitySession specific stuff...
        if (as != null)
        {
            if (isTraceOn && tc.isDebugEnabled())
                Tr.debug(tc, "atEnlist : running in AS : " + as);

            // Make sure the beanO is associated with the current TX
            bean.setContainerTx(tx);

            // Enlist the bean with the AS; a no-op if already enlisted.
            // Another pin is not needed, nor does one need to be dropped.
            //
            // Here are the possible scenarios:
            // 1 - UAS.beginSession: a pin will have been taken for the method
            //     call... that becomes the AS pin.
            // 2 - UAS completion: AS is not active, AS pin is now the pin
            //     for the current method call.
            // 3 - UTx.begin: either an AS is not present or the bean is already
            //     enlisted with the AS and pinned. If there is an AS, there is
            //     no method pin, as atAtivate would not have taken one.
            // 4 - UTx completion - if an AS is present, it already has a pin
            //     and a method pin was not taken. If no AS, then method has
            //     a pin.
            //
            // Net is, we must insure the bean is enlisted with the AS, as it
            // takes over ownership of one of the pins. If not enlisted here,
            // then the next activate will take an extra pin.               d655854
            as.enlist(bean);
        }

        if (isTraceOn && tc.isEntryEnabled())
            Tr.exit(tc, "atEnlist");
    }
@ Override void atEnlist ( ContainerTx tx , BeanO bean ) { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( tc , "atEnlist (" + tx + ", " + bean + ")" ) ; ContainerAS as = ContainerAS . getContainerAS ( tx ) ; super . atEnlist ( tx , bean ) ; if ( as != null ) { if ( isTraceOn && tc . isDebugEnabled ( ) ) Tr . debug ( tc , "atEnlist : running in AS : " + as ) ; bean . setContainerTx ( tx ) ; as . enlist ( bean ) ; } if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( tc , "atEnlist" ) ; }
Overridden to enlist the bean in the current activity session,
if one exists. <p>

This method is called when a user transaction or user activity
session is beginning or ending. An activity session will only
be active for the case where beginSession is being called. <p>