code: protected void viaHotdeploy(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
              throws IOException, ServletException {
          if (!ManagedHotdeploy.isHotdeploy()) { // e.g. production, unit-test
              toNextFilter(request, response, chain); // #to_action
              return;
          }
          final String loaderKey = HOTDEPLOY_CLASSLOADER_KEY;
          if (request.getAttribute(loaderKey) != null) { // check recursive call
              final ClassLoader loader = (ClassLoader) request.getAttribute(loaderKey);
              Thread.currentThread().setContextClassLoader(loader);
              toNextFilter(request, response, chain); // #to_action
              return;
          }
          synchronized (HotdeployLock.class) {
              final ClassLoader originalLoader = ManagedHotdeploy.start();
              try {
                  final HotdeployHttpServletRequest hotdeployRequest = newHotdeployHttpServletRequest(request);
                  ContainerUtil.overrideExternalRequest(hotdeployRequest); // override formal request
                  try {
                      request.setAttribute(loaderKey, Thread.currentThread().getContextClassLoader());
                      toNextFilter(hotdeployRequest, response, chain); // #to_action
                  } finally {
                      final HotdeployHttpSession session = (HotdeployHttpSession) hotdeployRequest.getSession(false);
                      if (session != null) {
                          session.flush();
                      }
                      request.removeAttribute(loaderKey);
                  }
              } finally {
                  ManagedHotdeploy.stop(originalLoader);
              }
          }
      }
docs: ----------------------