private void endASLocalTx(EJBKey key,
                              EJBMethodInfoImpl methodInfo,
                              LocalTransactionCoordinator lCoord,
                              boolean rollback)
    {
        // For EJB 2.0 SFSBs or Entity Beans with local tx boundary = ActivitySession,
        // do not end the local tx context now, but suspended it for reuse in
        // susequent methods (i.e. "sticky" local tx).  This is not done for home
        // methods because we have the key of the home rather than the key of the
        // bean instance.
        //
        // In the rollback case, where a bean method has thrown an exception, we
        // do not end the local tx context now.  The ActivitySession should have
        // been marked resetOnly which will eventually casue this local tx to end
        // with rollback.  In the mean time the application may continue to do
        // work on this local context, but it will be futile.
        //
        // Note that EJB 1.1 beans never have local tx boundary = ActivitySession.
        // This is enforced by a check in BeanMetaData.

        int type = methodInfo.getBeanMetaData().getEJBComponentType();
        if (!methodInfo.isHome() && // d126930.3
            type != InternalConstants.TYPE_MESSAGE_DRIVEN)
        {
            if (rollback)
            {
                lCoord.setRollbackOnly(); // d179185
            }

            suspendLocalTx();

            if ((type == InternalConstants.TYPE_STATEFUL_SESSION ||
                 type == InternalConstants.TYPE_BEAN_MANAGED_ENTITY ||
                type == InternalConstants.TYPE_CONTAINER_MANAGED_ENTITY) &&
                !methodInfo.isBeanRemove()) // d179185, d180809
            {
                txCtrl.stickyLocalTxTable.put(key, lCoord);
            }
        }
    }
private void endASLocalTx ( EJBKey key , EJBMethodInfoImpl methodInfo , LocalTransactionCoordinator lCoord , boolean rollback ) { int type = methodInfo . getBeanMetaData ( ) . getEJBComponentType ( ) ; if ( ! methodInfo . isHome ( ) && type != InternalConstants . TYPE_MESSAGE_DRIVEN ) { if ( rollback ) { lCoord . setRollbackOnly ( ) ; } suspendLocalTx ( ) ; if ( ( type == InternalConstants . TYPE_STATEFUL_SESSION || type == InternalConstants . TYPE_BEAN_MANAGED_ENTITY || type == InternalConstants . TYPE_CONTAINER_MANAGED_ENTITY ) && ! methodInfo . isBeanRemove ( ) ) { txCtrl . stickyLocalTxTable . put ( key , lCoord ) ; } } }
RTC103197