jobtrackerinfoserver.java
来自「Hadoop是一个用于运行应用程序在大型集群的廉价硬件设备上的框架。Hadoop」· Java 代码 · 共 118 行
JAVA
118 行
/** * Copyright 2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.hadoop.mapred;import org.mortbay.http.*;import org.mortbay.http.handler.*;import org.mortbay.jetty.servlet.*;import java.io.*;import java.net.*;/******************************************************* * JobTrackerInfoServer provides stats about the JobTracker * via HTTP. It's useful for clients that want to track * their jobs' progress. * * @author Mike Cafarella *******************************************************/class JobTrackerInfoServer { public static class RedirectHandler extends AbstractHttpHandler { public void handle(String pathInContext, String pathParams, HttpRequest request, HttpResponse response) throws HttpException, IOException { response.sendRedirect("/jobtracker"); request.setHandled(true); } } ///////////////////////////////////// // The actual JobTrackerInfoServer ///////////////////////////////////// static JobTracker jobTracker; org.mortbay.jetty.Server server; /** * We need the jobTracker to grab stats, and the port to * know where to listen. */ private static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows"); public JobTrackerInfoServer(JobTracker jobTracker, int port) throws IOException { this.jobTracker = jobTracker; this.server = new org.mortbay.jetty.Server(); URL url = JobTrackerInfoServer.class.getClassLoader().getResource("webapps"); String path = url.getPath(); if (WINDOWS && path.startsWith("/")) { path = path.substring(1); try { path = URLDecoder.decode(path, "UTF-8"); } catch (UnsupportedEncodingException e) { } } WebApplicationContext context = server.addWebApplication(null,"/",new File(path).getCanonicalPath()); SocketListener socketListener = new SocketListener(); socketListener.setPort(port); this.server.addListener(socketListener); // // REMIND - mjc - I can't figure out how to get request redirect to work. // I've tried adding an additional default handler to the context, but // it doesn't seem to work. The handler has its handle() function called // even when the JSP is processed correctly! I just want to add a redirect // page, when the URL is incorrectly typed. // // context.addHandler(new LocalNotFoundHandler()); } /** * The thread class we need to kick off the HTTP server async-style. */ class HTTPStarter implements Runnable { public void run() { try { server.start(); } catch (Exception me) { me.printStackTrace(); } } } /** * Launch the HTTP server */ public void start() throws IOException { new Thread(new HTTPStarter()).start(); try { Thread.sleep(1000); } catch (InterruptedException ie) { } if (! server.isStarted()) { throw new IOException("Could not start HTTP server"); } } /** * Stop the HTTP server */ public void stop() { try { this.server.stop(); } catch (InterruptedException ie) { } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?