@Override public boolean preHandle( HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception { WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request); asyncManager.setTimeoutHandler( new Runnable() { @Override public void run() { try { logger.debug("Custom time out handler called"); response.sendError( 503, "Async execution of [" + handler + "] did not complete on time"); } catch (IOException e) { logger.error("Timeout not handled", e); } } }); logger.debug("Registered custom timeout handler"); return true; }