if(options.has(portOpt))
portNumber = options.valueOf(portOpt);
int httpThreads = 10;
if(options.has(httpThreadsOpt))
httpThreads = options.valueOf(httpThreadsOpt);
final HttpServer server = new HttpServer();
SocketListener listener = new SocketListener();
listener.setPort(portNumber);
listener.setMinThreads(1);
listener.setMaxThreads(httpThreads);
server.addListener(listener);
HttpContext context = new HttpContext();
context.setContextPath("/");
context.setAttribute(AzkabanServletContextListener.AZKABAN_SERVLET_CONTEXT_KEY, app);
server.addContext(context);
String staticDir = options.has(staticContentOpt) ? options.valueOf(staticContentOpt)
: DEFAULT_STATIC_DIR;
ServletHandler servlets = new ServletHandler();
context.addHandler(servlets);
context.setResourceBase(staticDir);
servlets.addServlet("Static", "/static/*", Default.class.getName());
servlets.addServlet("Index", "/", IndexServlet.class.getName());
servlets.addServlet("Logs", "/logs", LogServlet.class.getName());
servlets.addServlet("Job Detail", "/job", JobDetailServlet.class.getName());
servlets.addServlet("Job Execution History",
"/history/*",
ExecutionHistoryServlet.class.getName());
servlets.addServlet("Job Manager", "/api/jobs", JobManagerServlet.class.getName());
servlets.addServlet("Job Upload", "/job-upload/*", JobUploadServlet.class.getName());
servlets.addServlet("HDFS Browser", "/fs/*", HdfsBrowserServlet.class.getName());
servlets.addServlet("Api Servlet", "/call", ApiServlet.class.getName());
servlets.addServlet("Flow Execution", "/flow", FlowExecutionServlet.class.getName());
servlets.addServlet("favicon", "/favicon.ico", Default.class.getName());
try {
server.start();
} catch(Exception e) {
logger.warn(e);
Utils.croak(e.getMessage(), 1);
}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
logger.info("Shutting down http server...");
try {
server.stop();
server.destroy();
} catch(Exception e) {
logger.error("Error while shutting down http server.", e);
}
logger.info("kk thx bye.");
}