@Override
 public RegistrationBean createRegistrationBean(
     String name, Servlet source, int totalNumberOfSourceBeans) {
   String url = (totalNumberOfSourceBeans == 1 ? "/" : "/" + name + "/");
   if (name.equals(DISPATCHER_SERVLET_NAME)) {
     url = "/"; // always map the main dispatcherServlet to "/"
   }
   ServletRegistrationBean bean = new ServletRegistrationBean(source, url);
   bean.setMultipartConfig(this.multipartConfig);
   return bean;
 }
  @SuppressWarnings("serial")
  private ServletContextInitializer errorServletRegistration() {
    ServletRegistrationBean bean =
        new ServletRegistrationBean(
            new ExampleServlet() {

              @Override
              public void service(ServletRequest request, ServletResponse response)
                  throws ServletException, IOException {
                throw new RuntimeException("Planned");
              }
            },
            "/bang");
    bean.setName("error");
    return bean;
  }
  protected final ServletContextInitializer sessionServletRegistration() {
    ServletRegistrationBean bean =
        new ServletRegistrationBean(
            new ExampleServlet() {

              @Override
              public void service(ServletRequest request, ServletResponse response)
                  throws ServletException, IOException {
                HttpSession session = ((HttpServletRequest) request).getSession(true);
                long value = System.currentTimeMillis();
                Object existing = session.getAttribute("boot");
                session.setAttribute("boot", value);
                PrintWriter writer = response.getWriter();
                writer.append(String.valueOf(existing) + ":" + value);
              }
            },
            "/session");
    bean.setName("session");
    return bean;
  }