public static RootLocator getRootLocator()
public synchronized static RootLocator getRootLocator()
    public static RootLocator getRootLocator()        throws SmartFrogException, RemoteException {        String className = null;        try {            if (rootLocator == null) {                className = (String) getProcessCompoundDescription().sfResolve(refRootLocatorClass);                return (RootLocator) SFClassLoader.forName(className)                                                  .newInstance();            }        } catch (ClassNotFoundException cnfexcp) {            // TODO: Check            throw new SmartFrogDeploymentException(MessageUtil.formatMessage(                    MSG_CLASS_NOT_FOUND, className), cnfexcp);        } catch (InstantiationException instexcp) {            throw new SmartFrogDeploymentException(MessageUtil.formatMessage(                    MSG_INSTANTIATION_ERROR, className), instexcp);        } catch (IllegalAccessException illaexcp) {            throw new SmartFrogDeploymentException(MessageUtil.formatMessage(                    MSG_ILLEGAL_ACCESS, className, "newInstance()"), illaexcp);        }        return rootLocator;    }