public EJSHome getHomeAndInitialize() // d648522
    {
        // For performance, use double-checked locking with volatile.
        EJSHome result = (EJSHome) homeInternal; // volatile
        if (result == null)
        {
            EJBModuleMetaDataImpl mmd = bmd._moduleMetaData;
            EJBApplicationMetaData ejbAMD = mmd.getEJBApplicationMetaData();
            ejbAMD.checkIfEJBWorkAllowed(mmd);

            // We must lock on an application-wide object because common archive
            // is not thread-safe.
            synchronized (ejbAMD)
            {
                result = (EJSHome) homeInternal;
                if (result == null)
                {
                    // homeInternal is set by EJSContainer.startBean.
                    result = bmd.container.getEJBRuntime().initializeDeferredEJB(this);
                }
            }
        }

        return result;
    }
public EJSHome getHomeAndInitialize ( ) { EJSHome result = ( EJSHome ) homeInternal ; if ( result == null ) { EJBModuleMetaDataImpl mmd = bmd . _moduleMetaData ; EJBApplicationMetaData ejbAMD = mmd . getEJBApplicationMetaData ( ) ; ejbAMD . checkIfEJBWorkAllowed ( mmd ) ; synchronized ( ejbAMD ) { result = ( EJSHome ) homeInternal ; if ( result == null ) { result = bmd . container . getEJBRuntime ( ) . initializeDeferredEJB ( this ) ; } } } return result ; }
getHomeAndInitialize() is called to return the <code>EJSHome</code> reference
stored in this HomeRecord. If this reference is null, then the initialization
of this EJB has been deferred. In that case the EJB initialization will be triggered
from this method.
<p>

@return <code>EJSHome</code> associated with this HomeRecord.