org.apache.hadoop.http
Class HttpServer

java.lang.Object
  extended by org.apache.hadoop.http.HttpServer
All Implemented Interfaces:
FilterContainer
Direct Known Subclasses:
StatusHttpServer

public class HttpServer
extends Object
implements FilterContainer

Create a Jetty embedded server to answer http requests. The primary goal is to serve up status information for the server. There are three contexts: "/logs/" -> points to the log directory "/static/" -> points to common static files (src/webapps/static) "/" -> the jsp server code from (src/webapps/)


Nested Class Summary
static class HttpServer.StackServlet
          A very simple servlet to serve up a text representation of the current stack traces.
 
Field Summary
protected  Map<org.mortbay.jetty.servlet.WebApplicationContext,Boolean> defaultContexts
           
protected  List<String> filterNames
           
protected  boolean findPort
           
protected  org.mortbay.http.SocketListener listener
           
static org.apache.commons.logging.Log LOG
           
protected  org.mortbay.jetty.servlet.WebApplicationContext webAppContext
           
protected  org.mortbay.jetty.Server webServer
           
 
Constructor Summary
HttpServer(String name, String bindAddress, int port, boolean findPort)
          Same as this(name, bindAddress, port, findPort, null);
HttpServer(String name, String bindAddress, int port, boolean findPort, Configuration conf)
          Create a status server on the given port.
 
Method Summary
protected  void addContext(String pathSpec, String dir, boolean isFiltered)
          Add a context
protected  void addDefaultApps(String appDir)
          Add default apps.
protected  void addDefaultServlets()
          Add default servlets.
 void addFilter(String name, String classname, Map<String,String> parameters)
          Add a filter to the container.
protected  void addFilterPathMapping(String pathSpec)
          Add the path spec to the filter path mapping.
 void addInternalServlet(String name, String pathSpec, Class<? extends javax.servlet.http.HttpServlet> clazz)
          Deprecated. this is a temporary method
 void addServlet(String name, String pathSpec, Class<? extends javax.servlet.http.HttpServlet> clazz)
          Add a servlet in the server.
 void addSslListener(InetSocketAddress addr, String keystore, String storPass, String keyPass)
          Configure an ssl listener on the server.
protected  void defineFilter(org.mortbay.jetty.servlet.WebApplicationContext ctx, String name, String classname, Map<String,String> parameters, String[] urls)
          Define a filter for a context and set up default url mappings.
 Object getAttribute(String name)
          Get the value in the webapp context.
 int getPort()
          Get the port that the server is on
protected  String getWebAppsPath()
          Get the pathname to the webapps files.
 void setAttribute(String name, Object value)
          Set a value in the webapp context.
 void setThreads(int min, int max)
           
 void start()
          Start the server.
 void stop()
          stop the server
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

public static final org.apache.commons.logging.Log LOG

webServer

protected final org.mortbay.jetty.Server webServer

webAppContext

protected final org.mortbay.jetty.servlet.WebApplicationContext webAppContext

defaultContexts

protected final Map<org.mortbay.jetty.servlet.WebApplicationContext,Boolean> defaultContexts

findPort

protected final boolean findPort

listener

protected final org.mortbay.http.SocketListener listener

filterNames

protected final List<String> filterNames
Constructor Detail

HttpServer

public HttpServer(String name,
                  String bindAddress,
                  int port,
                  boolean findPort)
           throws IOException
Same as this(name, bindAddress, port, findPort, null);

Throws:
IOException

HttpServer

public HttpServer(String name,
                  String bindAddress,
                  int port,
                  boolean findPort,
                  Configuration conf)
           throws IOException
Create a status server on the given port. The jsp scripts are taken from src/webapps/.

Parameters:
name - The name of the server
port - The port to use on the server
findPort - whether the server should start at the given port and increment by 1 until it finds a free port.
conf - Configuration
Throws:
IOException
Method Detail

addDefaultApps

protected void addDefaultApps(String appDir)
                       throws IOException
Add default apps.

Parameters:
appDir - The application directory
Throws:
IOException

addDefaultServlets

protected void addDefaultServlets()
Add default servlets.


addContext

protected void addContext(String pathSpec,
                          String dir,
                          boolean isFiltered)
                   throws IOException
Add a context

Parameters:
pathSpec - The path spec for the context
dir - The directory containing the context
isFiltered - if true, the servlet is added to the filter path mapping
Throws:
IOException

setAttribute

public void setAttribute(String name,
                         Object value)
Set a value in the webapp context. These values are available to the jsp pages as "application.getAttribute(name)".

Parameters:
name - The name of the attribute
value - The value of the attribute

addServlet

public void addServlet(String name,
                       String pathSpec,
                       Class<? extends javax.servlet.http.HttpServlet> clazz)
Add a servlet in the server.

Parameters:
name - The name of the servlet (can be passed as null)
pathSpec - The path spec for the servlet
clazz - The servlet class

addInternalServlet

@Deprecated
public void addInternalServlet(String name,
                                          String pathSpec,
                                          Class<? extends javax.servlet.http.HttpServlet> clazz)
Deprecated. this is a temporary method

Add an internal servlet in the server.

Parameters:
name - The name of the servlet (can be passed as null)
pathSpec - The path spec for the servlet
clazz - The servlet class

addFilter

public void addFilter(String name,
                      String classname,
                      Map<String,String> parameters)
Add a filter to the container.

Specified by:
addFilter in interface FilterContainer
Parameters:
name - Filter name
classname - Filter class name
parameters - a map from parameter names to initial values

defineFilter

protected void defineFilter(org.mortbay.jetty.servlet.WebApplicationContext ctx,
                            String name,
                            String classname,
                            Map<String,String> parameters,
                            String[] urls)
Define a filter for a context and set up default url mappings.


addFilterPathMapping

protected void addFilterPathMapping(String pathSpec)
Add the path spec to the filter path mapping.

Parameters:
pathSpec - The path spec

getAttribute

public Object getAttribute(String name)
Get the value in the webapp context.

Parameters:
name - The name of the attribute
Returns:
The value of the attribute

getWebAppsPath

protected String getWebAppsPath()
                         throws IOException
Get the pathname to the webapps files.

Returns:
the pathname as a URL
Throws:
IOException - if 'webapps' directory cannot be found on CLASSPATH.

getPort

public int getPort()
Get the port that the server is on

Returns:
the port

setThreads

public void setThreads(int min,
                       int max)

addSslListener

public void addSslListener(InetSocketAddress addr,
                           String keystore,
                           String storPass,
                           String keyPass)
                    throws IOException
Configure an ssl listener on the server.

Parameters:
addr - address to listen on
keystore - location of the keystore
storPass - password for the keystore
keyPass - password for the key
Throws:
IOException

start

public void start()
           throws IOException
Start the server. Does not wait for the server to start.

Throws:
IOException

stop

public void stop()
          throws InterruptedException
stop the server

Throws:
InterruptedException


Copyright © 2008 The Apache Software Foundation