private synchronized void bootServices() {
      
      //Check to see if we already started
      if(sessionBooted_flag) return;
      
      logger.log(Level.INFO, "BOOTING Services");
      sessionBooted_flag = true;
            
      //Boot the services listed in boot_services.xml
      try {
         URL url = null;
         String bootURL = System.getProperty(BOOT_SERVICES_URL);
         if(bootURL != null) {
            url = new URL(bootURL);
         }
         else {
            File bootServicesFile = new File(Boot.getBootDir(), "boot_services.xml");
            if(bootServicesFile.exists()) {
                url = bootServicesFile.toURI().toURL();
                logger.log(Level.INFO, "Boot Services URL:"+url.toString());
            }
         }

         //Start the Boot Services, fail if any don't start
         bootServiceExps = ServiceStarter.startServices(url, true, false);
         
         ServiceStartException exp = null; 
         if(!bootServiceExps.isEmpty()) {
            Iterator it = bootServiceExps.iterator();
            while(it.hasNext()) {
               exp = (ServiceStartException)it.next();
               if(exp.getService()!=null)
                  logger.log(Level.SEVERE, "An Error occured starting boot service:"+exp.getService().getName(), exp);
               else
                  logger.log(Level.SEVERE, "An Error occured starting boot services:"+exp.getMessage(), exp);
            }
            
            //Should show an Error Dialog Here
            Boot.showError("Error Booting:"+Boot.getAppName(), "<html>There was a problem booting the Application Environment:<br><br>"+exp.getMessage()+"</html>", exp);
            Boot.endSession(true);
         }
      }
      catch(Throwable exp) {
         //This is Bad
         logger.log(Level.SEVERE, "Error Starting Boot Services!", exp);
         //Should show an Error Dialog Here
         Boot.showError("Error Booting:"+Boot.getAppName(), "<html>There was a problem booting the Application Environment:<br><br>"+exp.getMessage()+"</html>", exp);
         endSession();
      }
      
      fireSessionBooted();
   }