org.apache.hadoop.http
Class HttpServer

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

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.Context,Boolean> defaultContexts
           
protected  List<String> filterNames
           
protected  boolean findPort
           
protected  org.mortbay.jetty.Connector listener
           
static org.apache.commons.logging.Log LOG
           
protected  org.mortbay.jetty.webapp.WebAppContext 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
 void addContext(org.mortbay.jetty.servlet.Context ctxt, boolean isFiltered)
           
protected  void addContext(String pathSpec, String dir, boolean isFiltered)
          Add a context
protected  void addDefaultApps(org.mortbay.jetty.handler.ContextHandlerCollection parent, 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, org.mortbay.jetty.servlet.Context webAppCtx)
          Add the path spec to the filter path mapping.
 void addGlobalFilter(String name, String classname, Map<String,String> parameters)
          Add a global filter to the container.
 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, Configuration sslConf, boolean needClientAuth)
          Configure an ssl listener on the server.
 void addSslListener(InetSocketAddress addr, String keystore, String storPass, String keyPass)
          Deprecated. Use addSslListener(InetSocketAddress, Configuration, boolean)
protected  org.mortbay.jetty.Connector createBaseListener(Configuration conf)
          Create a required listener for the Jetty instance listening on the port provided.
protected  void defineFilter(org.mortbay.jetty.servlet.Context 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 join()
           
 void setAttribute(String name, Object value)
          Set a value in the webapp context.
 void setThreads(int min, int max)
          Set the min, max number of worker threads (simultaneous connections).
 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

listener

protected final org.mortbay.jetty.Connector listener

webAppContext

protected final org.mortbay.jetty.webapp.WebAppContext webAppContext

findPort

protected final boolean findPort

defaultContexts

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

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

createBaseListener

protected org.mortbay.jetty.Connector createBaseListener(Configuration conf)
                                                  throws IOException
Create a required listener for the Jetty instance listening on the port provided. This wrapper and all subclasses must create at least one listener.

Throws:
IOException

addDefaultApps

protected void addDefaultApps(org.mortbay.jetty.handler.ContextHandlerCollection parent,
                              String appDir)
                       throws IOException
Add default apps.

Parameters:
appDir - The application directory
Throws:
IOException

addDefaultServlets

protected void addDefaultServlets()
Add default servlets.


addContext

public void addContext(org.mortbay.jetty.servlet.Context ctxt,
                       boolean isFiltered)
                throws IOException
Throws:
IOException

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

addGlobalFilter

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

Specified by:
addGlobalFilter 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.Context 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,
                                    org.mortbay.jetty.servlet.Context webAppCtx)
Add the path spec to the filter path mapping.

Parameters:
pathSpec - The path spec
webAppCtx - The WebApplicationContext to add to

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)
Set the min, max number of worker threads (simultaneous connections).


addSslListener

@Deprecated
public void addSslListener(InetSocketAddress addr,
                                      String keystore,
                                      String storPass,
                                      String keyPass)
                    throws IOException
Deprecated. Use addSslListener(InetSocketAddress, Configuration, boolean)

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

addSslListener

public void addSslListener(InetSocketAddress addr,
                           Configuration sslConf,
                           boolean needClientAuth)
                    throws IOException
Configure an ssl listener on the server.

Parameters:
addr - address to listen on
sslConf - conf to retrieve ssl options
needClientAuth - whether client authentication is required
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 Exception
stop the server

Throws:
Exception

join

public void join()
          throws InterruptedException
Throws:
InterruptedException


Copyright © 2009 The Apache Software Foundation