void initializeWebServer(Builder b) { // Create the thread pool for the web server to handle HTTP requests QueuedThreadPool threadPool = new QueuedThreadPool(); if (b.maxThreads > 0) { threadPool.setMaxThreads(b.maxThreads); } threadPool.setDaemon(true); threadPool.setName(b.name + "-web"); webServer.setThreadPool(threadPool); // Create the channel connector for the web server Connector connector = createChannelConnector(threadPool.getMaxThreads(), b); connector.setHost(b.host); connector.setPort(b.port); webServer.addConnector(connector); RewriteHandler rwHandler = new RewriteHandler(); rwHandler.setRewriteRequestURI(true); rwHandler.setRewritePathInfo(false); RewriteRegexRule rootRule = new RewriteRegexRule(); rootRule.setRegex("^/$"); rootRule.setReplacement(b.contextRootRewriteTarget); rootRule.setTerminating(true); rwHandler.addRule(rootRule); rwHandler.setHandler(webAppContext); // Configure web application contexts for the web server ContextHandlerCollection contexts = new ContextHandlerCollection(); contexts.addHandler(rwHandler); webServer.setHandler(contexts); addServlet("jmx", "/jmx", JMXJsonServlet.class); addServlet("conf", "/conf", ConfServlet.class); addServlet("stacks", "/stacks", StackServlet.class); for (Pair<String, Class<? extends HttpServlet>> p : b.servlets) { addServlet(p.getFirst(), "/" + p.getFirst(), p.getSecond()); } ServletContextHandler staticCtx = new ServletContextHandler(contexts, "/static"); staticCtx.setResourceBase(appDir + "/static"); staticCtx.addServlet(DefaultServlet.class, "/*"); staticCtx.setDisplayName("static"); String logDir = getLogDir(b.conf); if (logDir != null) { ServletContextHandler logCtx = new ServletContextHandler(contexts, "/logs"); setContextAttributes(logCtx.getServletContext(), b.contextAttrs); logCtx.addServlet(AdminAuthorizedServlet.class, "/*"); logCtx.setResourceBase(logDir); logCtx.setDisplayName("logs"); } }
private static Handler getRewriteHandler(Handler wrapped) { RewriteHandler rewrites = new RewriteHandler(); rewrites.setOriginalPathAttribute(ORIGINAL_PATH_ATTRIBUTE_NAME); rewrites.setRewriteRequestURI(true); rewrites.setRewritePathInfo(true); for (Map.Entry<String, String> entry : REGEX_REWRITE_RULES.entrySet()) { RewriteRegexRule rule = new RewriteRegexRule(); rule.setRegex(entry.getKey()); rule.setReplacement(entry.getValue()); rewrites.addRule(rule); } rewrites.setHandler(wrapped); return rewrites; }