sfLog = null; sfLog();
    public void sfDeployWith(Prim parent, Context cxt) throws        SmartFrogDeploymentException, RemoteException {        try {            sfParent = parent;            sfContext = cxt;            sfDeployWithHooks.applyHooks(this, null);            // set the prim parent link of any contained component description to this Prim            // so that references work            for (Enumeration e = sfContext.keys(); e.hasMoreElements(); ) {                Object value = sfContext.get(e.nextElement());                // Only set prim parent for LAZY descriptions. Otherwise not needed because it will be deployed.                if ((value instanceof ComponentDescription) && (!((ComponentDescription)value).getEager())) {                    ((ComponentDescription)value).setPrimParent(this);                }            }            boolean es; // allow exportRef to be defined by string (backward compatability) or boolean            Object eso = sfResolveHere(SmartFrogCoreKeys.SF_EXPORT, false);            if (eso==null) {                es = true;            } else if (eso instanceof String) {                es = Boolean.valueOf((String)eso).booleanValue();            } else {                es = ((Boolean)eso).booleanValue();            }            if (es) {                //Default value=0 = Anonymous port.                int port = 0;                Object portObj = sfResolveHere(SmartFrogCoreKeys.SF_EXPORT_PORT,false);                Object exportRef = null;                sfExport(portObj);            }            //Object exported. Now we can use the right log for this component.            // Before this we are using SFCORE_LOG            //Don't ini the component log before the object is exported            sfLog = null;            sfLog(); //Ini component log after the object exported            if (sfParent!=null) {                ((ChildMinder)sfParent).sfAddChild(this);            }            registerWithProcessCompound();            // Look up delay, if not there never mind looking up factor            sfLivenessDelay = sfResolve(refLivenessDelay, sfLivenessDelay, false);            sfLivenessFactor = sfResolve(refLivenessFactor, sfLivenessFactor, false);            // copy in local description for efficiency when subcomponents looking up            sfReplaceAttribute(SmartFrogCoreKeys.SF_LIVENESS_DELAY, new Long(sfLivenessDelay));            // copy in local description for efficiency when subcomponents looking up            sfReplaceAttribute(SmartFrogCoreKeys.SF_LIVENESS_FACTOR, new Integer(sfLivenessFactor));            sfLivenessCount = sfLivenessFactor;            // start the liveness thread            sfStartLivenessSender();            // add location information attributes            sfReplaceAttribute(SmartFrogCoreKeys.SF_HOST, sfDeployedHost());            sfReplaceAttribute(SmartFrogCoreKeys.SF_PROCESS, sfDeployedProcessName());        } catch (Exception sfex) {            if (sfLog().isErrorEnabled()) {                sfLog().error(sfex);            }            //Logger.log(sfex);            new TerminatorThread(this, sfex, null).quietly().start();            throw (SmartFrogDeploymentException)SmartFrogDeploymentException.forward(sfex);        }    }