code: protected synchronized void doStart()
          throws Exception
      {
          log.info("Version "+Version.getImplVersion());
          
          MultiException mex = new MultiException();
  
          statsReset();
          
          if (log.isDebugEnabled())
          {
              log.debug("LISTENERS: "+_listeners);
              log.debug("HANDLER: "+_virtualHostMap);
          }   
  
          if (_requestLog!=null && !_requestLog.isStarted())
          {
              try{
                  _requestLog.start();
              }
              catch(Exception e){mex.add(e);}
          }
          
          HttpContext[] contexts = getContexts();
          for (int i=0;i<contexts.length;i++)
          {
              HttpContext context=contexts[i];
              try{context.start();}catch(Exception e){mex.add(e);}
          }
          
          for (int l=0;l<_listeners.size();l++)
          {
              HttpListener listener =(HttpListener)_listeners.get(l);
              listener.setHttpServer(this);
              if (!listener.isStarted())
                  try{listener.start();}catch(Exception e){mex.add(e);}
          }
  
          mex.ifExceptionThrowMulti();
      }
docs: Start all handlers then listeners.
  If a subcomponent fails to start, it's exception is added to a
  org.mortbay.util.MultiException and the start method continues.
  @exception MultiException A collection of exceptions thrown by
  start() method of subcomponents of the HttpServer.