@Override public void init(ServletConfig config) throws ServletException { try { this.config = config; this.servletContext = config.getServletContext(); // Note that the config variable may be null, in which case default handlers will be used // If present and blank, NO handlers will be configed List<String> authHandlers = loadAuthHandlersIfAny(config.getInitParameter("authentication.handler.classes")); String resourceFactoryFactoryClassName = config.getInitParameter("resource.factory.factory.class"); if (resourceFactoryFactoryClassName != null && resourceFactoryFactoryClassName.length() > 0) { initFromFactoryFactory(resourceFactoryFactoryClassName, authHandlers); } else { String resourceFactoryClassName = config.getInitParameter("resource.factory.class"); String responseHandlerClassName = config.getInitParameter("response.handler.class"); init(resourceFactoryClassName, responseHandlerClassName, authHandlers); } httpManager.init(new ApplicationConfig(config), httpManager); } catch (ServletException ex) { log.error("Exception starting milton servlet", ex); throw ex; } catch (Throwable ex) { log.error("Exception starting milton servlet", ex); throw new RuntimeException(ex); } }
@Override public void destroy() { log.debug("destroy"); if (httpManager == null) { return; } httpManager.destroy(httpManager); }
@Override public void service( javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest) servletRequest; HttpServletResponse resp = (HttpServletResponse) servletResponse; try { setThreadlocals(req, resp); tlServletConfig.set(config); Request request = new ServletRequest(req, servletContext); Response response = new ServletResponse(resp); httpManager.process(request, response); } finally { clearThreadlocals(); tlServletConfig.remove(); ServletRequest.clearThreadLocals(); servletResponse.getOutputStream().flush(); servletResponse.flushBuffer(); } }