public class HttpServer extends java.lang.Object implements FilterContainer
Modifier and Type | Class and Description |
---|---|
static class |
HttpServer.Builder
Class to construct instances of HTTP server with specific options.
|
static class |
HttpServer.QuotingInputFilter
A Servlet input filter that quotes all HTML active characters in the
parameter names and values.
|
static class |
HttpServer.StackServlet
A very simple servlet to serve up a text representation of the current
stack traces.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ADMINS_ACL |
static java.lang.String |
APP_DIR |
protected java.lang.String |
appDir |
static java.lang.String |
BIND_ADDRESS |
static java.lang.String |
CONF_CONTEXT_ATTRIBUTE |
protected java.util.Map<ServletContextHandler,java.lang.Boolean> |
defaultContexts |
protected java.util.List<java.lang.String> |
filterNames |
protected boolean |
findPort |
static java.lang.String |
HTTP_AUTHENTICATION_SIGNATURE_SECRET_FILE_KEY |
static java.lang.String |
HTTP_SPNEGO_AUTHENTICATION_KEYTAB_KEY |
static java.lang.String |
HTTP_SPNEGO_AUTHENTICATION_KRB_NAME_KEY |
static java.lang.String |
HTTP_SPNEGO_AUTHENTICATION_PRINCIPAL_KEY |
static java.lang.String |
HTTP_UI_AUTHENTICATION |
protected java.lang.String |
logDir |
static java.lang.String |
NO_CACHE_FILTER |
static java.lang.String |
SPNEGO_FILTER |
protected WebAppContext |
webAppContext |
protected Server |
webServer |
Constructor and Description |
---|
HttpServer(java.lang.String name,
java.lang.String bindAddress,
int port,
boolean findPort)
Deprecated.
|
HttpServer(java.lang.String name,
java.lang.String bindAddress,
int port,
boolean findPort,
Configuration conf)
Deprecated.
|
HttpServer(java.lang.String name,
java.lang.String bindAddress,
int port,
boolean findPort,
Configuration conf,
AccessControlList adminsAcl)
Deprecated.
|
HttpServer(java.lang.String name,
java.lang.String bindAddress,
int port,
boolean findPort,
Configuration conf,
AccessControlList adminsAcl,
java.lang.String[] pathSpecs)
Deprecated.
|
HttpServer(java.lang.String name,
java.lang.String bindAddress,
int port,
boolean findPort,
Configuration conf,
java.lang.String[] pathSpecs)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addDefaultApps(ContextHandlerCollection parent,
java.lang.String appDir,
Configuration conf)
Add default apps.
|
protected void |
addDefaultServlets()
Add default servlets.
|
void |
addFilter(java.lang.String name,
java.lang.String classname,
java.util.Map<java.lang.String,java.lang.String> parameters)
Add a filter to the container.
|
protected void |
addFilterPathMapping(java.lang.String pathSpec,
WebAppContext webAppCtx)
Add the path spec to the filter path mapping.
|
void |
addGlobalFilter(java.lang.String name,
java.lang.String classname,
java.util.Map<java.lang.String,java.lang.String> parameters)
Add a global filter to the container - This global filter will be
applied to all available web contexts.
|
void |
addInternalServlet(java.lang.String name,
java.lang.String pathSpec,
java.lang.Class<? extends HttpServlet> clazz)
Add an internal servlet in the server.
|
void |
addInternalServlet(java.lang.String name,
java.lang.String pathSpec,
java.lang.Class<? extends HttpServlet> clazz,
boolean requireAuth)
Add an internal servlet in the server, specifying whether or not to
protect with Kerberos authentication.
|
void |
addJerseyResourcePackage(java.lang.String packageName,
java.lang.String pathSpec)
Add a Jersey resource package.
|
void |
addServlet(java.lang.String name,
java.lang.String pathSpec,
java.lang.Class<? extends HttpServlet> clazz)
Add a servlet in the server.
|
static void |
defineFilter(ServletContextHandler handler,
java.lang.String name,
java.lang.String classname,
java.util.Map<java.lang.String,java.lang.String> parameters,
java.lang.String[] urls)
Define a filter for a context and set up default url mappings.
|
java.lang.Object |
getAttribute(java.lang.String name)
Get the value in the webapp context.
|
java.net.InetSocketAddress |
getConnectorAddress(int index)
Get the address that corresponds to a particular connector.
|
int |
getPort()
Deprecated.
|
java.util.List<ServerConnector> |
getServerConnectors() |
WebAppContext |
getWebAppContext() |
java.lang.String |
getWebAppsPath(java.lang.String appName) |
protected java.lang.String |
getWebAppsPath(java.lang.String webapps,
java.lang.String appName)
Get the pathname to the webapps files.
|
static boolean |
hasAdministratorAccess(ServletContext servletContext,
HttpServletRequest request,
HttpServletResponse response)
Does the user sending the HttpServletRequest has the administrator ACLs? If
it isn't the case, response will be modified to send an error to the user.
|
boolean |
isAlive()
Test for the availability of the web server
|
static boolean |
isInstrumentationAccessAllowed(ServletContext servletContext,
HttpServletRequest request,
HttpServletResponse response)
Checks the user has privileges to access to instrumentation servlets.
|
void |
join() |
void |
setAttribute(java.lang.String name,
java.lang.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
|
java.lang.String |
toString()
Return the host and port of the HttpServer, if live
|
static boolean |
userHasAdministratorAccess(ServletContext servletContext,
java.lang.String remoteUser)
Get the admin ACLs from the given ServletContext and check if the given
user is in the ACL.
|
public static final java.lang.String HTTP_UI_AUTHENTICATION
public static final java.lang.String HTTP_SPNEGO_AUTHENTICATION_PRINCIPAL_KEY
public static final java.lang.String HTTP_SPNEGO_AUTHENTICATION_KEYTAB_KEY
public static final java.lang.String HTTP_SPNEGO_AUTHENTICATION_KRB_NAME_KEY
public static final java.lang.String HTTP_AUTHENTICATION_SIGNATURE_SECRET_FILE_KEY
public static final java.lang.String CONF_CONTEXT_ATTRIBUTE
public static final java.lang.String ADMINS_ACL
public static final java.lang.String BIND_ADDRESS
public static final java.lang.String SPNEGO_FILTER
public static final java.lang.String NO_CACHE_FILTER
public static final java.lang.String APP_DIR
protected final Server webServer
protected java.lang.String appDir
protected java.lang.String logDir
protected final WebAppContext webAppContext
protected final boolean findPort
protected final java.util.Map<ServletContextHandler,java.lang.Boolean> defaultContexts
protected final java.util.List<java.lang.String> filterNames
@Deprecated public HttpServer(java.lang.String name, java.lang.String bindAddress, int port, boolean findPort) throws java.io.IOException
java.io.IOException
@Deprecated public HttpServer(java.lang.String name, java.lang.String bindAddress, int port, boolean findPort, Configuration conf, java.lang.String[] pathSpecs) throws java.io.IOException
name
- The name of the serverbindAddress
- The address for this serverport
- The port to use on the serverfindPort
- whether the server should start at the given port and
increment by 1 until it finds a free port.conf
- ConfigurationpathSpecs
- Path specifications that this httpserver will be serving.
These will be added to any filters.java.io.IOException
@Deprecated public HttpServer(java.lang.String name, java.lang.String bindAddress, int port, boolean findPort, Configuration conf) throws java.io.IOException
name
- The name of the serverport
- The port to use on the serverfindPort
- whether the server should start at the given port and
increment by 1 until it finds a free port.conf
- Configurationjava.io.IOException
@Deprecated public HttpServer(java.lang.String name, java.lang.String bindAddress, int port, boolean findPort, Configuration conf, AccessControlList adminsAcl) throws java.io.IOException
java.io.IOException
@Deprecated public HttpServer(java.lang.String name, java.lang.String bindAddress, int port, boolean findPort, Configuration conf, AccessControlList adminsAcl, java.lang.String[] pathSpecs) throws java.io.IOException
name
- The name of the serverbindAddress
- The address for this serverport
- The port to use on the serverfindPort
- whether the server should start at the given port and
increment by 1 until it finds a free port.conf
- ConfigurationadminsAcl
- AccessControlList
of the adminspathSpecs
- Path specifications that this httpserver will be serving.
These will be added to any filters.java.io.IOException
public java.util.List<ServerConnector> getServerConnectors()
protected void addDefaultApps(ContextHandlerCollection parent, java.lang.String appDir, Configuration conf) throws java.io.IOException
appDir
- The application directoryjava.io.IOException
protected void addDefaultServlets()
public void setAttribute(java.lang.String name, java.lang.Object value)
name
- The name of the attributevalue
- The value of the attributepublic void addJerseyResourcePackage(java.lang.String packageName, java.lang.String pathSpec)
packageName
- The Java package name containing the Jersey resource.pathSpec
- The path spec for the servletpublic void addServlet(java.lang.String name, java.lang.String pathSpec, java.lang.Class<? extends HttpServlet> clazz)
name
- The name of the servlet (can be passed as null)pathSpec
- The path spec for the servletclazz
- The servlet classpublic void addInternalServlet(java.lang.String name, java.lang.String pathSpec, java.lang.Class<? extends HttpServlet> clazz)
name
- The name of the servlet (can be passed as null)pathSpec
- The path spec for the servletclazz
- The servlet classpublic void addInternalServlet(java.lang.String name, java.lang.String pathSpec, java.lang.Class<? extends HttpServlet> clazz, boolean requireAuth)
name
- The name of the servlet (can be passed as null)pathSpec
- The path spec for the servletclazz
- The servlet classrequireAuth
- Require Kerberos authenticate to access servletpublic void addFilter(java.lang.String name, java.lang.String classname, java.util.Map<java.lang.String,java.lang.String> parameters)
FilterContainer
addFilter
in interface FilterContainer
name
- Filter nameclassname
- Filter class nameparameters
- a map from parameter names to initial valuespublic void addGlobalFilter(java.lang.String name, java.lang.String classname, java.util.Map<java.lang.String,java.lang.String> parameters)
FilterContainer
addGlobalFilter
in interface FilterContainer
name
- filter nameclassname
- filter class nameparameters
- a map from parameter names to initial valuespublic static void defineFilter(ServletContextHandler handler, java.lang.String name, java.lang.String classname, java.util.Map<java.lang.String,java.lang.String> parameters, java.lang.String[] urls)
protected void addFilterPathMapping(java.lang.String pathSpec, WebAppContext webAppCtx)
pathSpec
- The path specwebAppCtx
- The WebApplicationContext to add topublic java.lang.Object getAttribute(java.lang.String name)
name
- The name of the attributepublic WebAppContext getWebAppContext()
public java.lang.String getWebAppsPath(java.lang.String appName) throws java.io.FileNotFoundException
java.io.FileNotFoundException
protected java.lang.String getWebAppsPath(java.lang.String webapps, java.lang.String appName) throws java.io.FileNotFoundException
appName
- eg "secondary" or "datanode"java.io.FileNotFoundException
- if 'webapps' directory cannot be found on CLASSPATH.@Deprecated public int getPort()
public java.net.InetSocketAddress getConnectorAddress(int index)
public void setThreads(int min, int max)
public void start() throws java.io.IOException
java.io.IOException
public void stop() throws java.lang.Exception
java.lang.Exception
public void join() throws java.lang.InterruptedException
java.lang.InterruptedException
public boolean isAlive()
public java.lang.String toString()
toString
in class java.lang.Object
public static boolean isInstrumentationAccessAllowed(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response) throws java.io.IOException
If hadoop.security.instrumentation.requires.admin
is set to FALSE
(default value) it always returns TRUE.
If hadoop.security.instrumentation.requires.admin
is set to TRUE
it will check that if the current user is in the admin ACLS. If the user is
in the admin ACLs it returns TRUE, otherwise it returns FALSE.
servletContext
- the servlet context.request
- the servlet request.response
- the servlet response.java.io.IOException
public static boolean hasAdministratorAccess(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response) throws java.io.IOException
servletContext
- request
- response
- used to send the error response if user does not have admin access.java.io.IOException
public static boolean userHasAdministratorAccess(ServletContext servletContext, java.lang.String remoteUser)
servletContext
- the context containing the admin ACL.remoteUser
- the remote user to check for.