code: public void setHandler(String name) throws ServletException {
  		if(!isValid()) {
  			throw new IllegalStateException("the session has already been invalidated, no handler can be set on it anymore !");
  		}
  		if(name != null && name.equals(handlerServlet)) {
  			return ;
  		}
  		SipContext sipContext = getSipApplicationSession().getSipContext();
  		MobicentsSipServlet container = sipContext.findSipServletByName(name);
  
  		if(container == null && sipContext.getSipRubyController() == null) {
  			throw new ServletException("the sip servlet with the name "+ name +
  					" doesn't exist in the sip application " + sipContext.getApplicationName());
  		}
  		this.handlerServlet = name;
  		getSipApplicationSession().setCurrentRequestHandler(handlerServlet);
  		if(logger.isDebugEnabled()) {
  			if(name !=null) {
  				logger.debug("Session Handler for application " + getKey().getApplicationName() + " set to " + handlerServlet + " on sip session " + key);
  			} else {
  				logger.debug("Session Handler for application " + getKey().getApplicationName() + " set to " + sipContext.getSipRubyController() + " on sip session " + key);
  			}
  		}
  	}
docs: /*
  (non-Javadoc)
  @see javax.servlet.sip.SipSession#setHandler(java.lang.String)