Class ContextHandler

All Implemented Interfaces:
Handler, HandlerContainer, Attributes, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, Graceful, LifeCycle
Direct Known Subclasses:
MovedContextHandler, ServletContextHandler

@ManagedObject("URI Context") @Deprecated(since="2021-05-27") public class ContextHandler extends ScopedHandler implements Attributes, Graceful
Deprecated.
The Eclipse Jetty and Apache Felix Http Jetty packages are no longer supported.
ContextHandler.

This handler wraps a call to handle by setting the context and servlet path, plus setting the context classloader.

If the context init parameter org.eclipse.jetty.server.context.ManagedAttributes is set to a comma separated list of names, then they are treated as context attribute names, which if set as attributes are passed to the servers Container so that they may be managed with JMX.

The maximum size of a form that can be processed by this context is controlled by the system properties org.eclipse.jetty.server.Request.maxFormKeys and org.eclipse.jetty.server.Request.maxFormContentSize. These can also be configured with setMaxFormContentSize(int) and setMaxFormKeys(int)

The executor is made available via a context attributed org.eclipse.jetty.server.Executor.

By default, the context is created with the AllowedResourceAliasChecker which is configured to allow symlinks. If this alias checker is not required, then clearAliasChecks() or setAliasChecks(List) should be called.

  • Field Details

    • SERVLET_MAJOR_VERSION

      public static final int SERVLET_MAJOR_VERSION
      Deprecated.
      See Also:
    • SERVLET_MINOR_VERSION

      public static final int SERVLET_MINOR_VERSION
      Deprecated.
      See Also:
    • SERVLET_LISTENER_TYPES

      public static final Class<?>[] SERVLET_LISTENER_TYPES
      Deprecated.
    • DEFAULT_LISTENER_TYPE_INDEX

      public static final int DEFAULT_LISTENER_TYPE_INDEX
      Deprecated.
      See Also:
    • EXTENDED_LISTENER_TYPE_INDEX

      public static final int EXTENDED_LISTENER_TYPE_INDEX
      Deprecated.
      See Also:
    • MANAGED_ATTRIBUTES

      public static final String MANAGED_ATTRIBUTES
      Deprecated.
      If a context attribute with this name is set, it is interpreted as a comma separated list of attribute name. Any other context attributes that are set with a name from this list will result in a call to setManagedAttribute(String, Object), which typically initiates the creation of a JMX MBean for the attribute value.
      See Also:
    • MAX_FORM_KEYS_KEY

      public static final String MAX_FORM_KEYS_KEY
      Deprecated.
      See Also:
    • MAX_FORM_CONTENT_SIZE_KEY

      public static final String MAX_FORM_CONTENT_SIZE_KEY
      Deprecated.
      See Also:
    • DEFAULT_MAX_FORM_KEYS

      public static final int DEFAULT_MAX_FORM_KEYS
      Deprecated.
      See Also:
    • DEFAULT_MAX_FORM_CONTENT_SIZE

      public static final int DEFAULT_MAX_FORM_CONTENT_SIZE
      Deprecated.
      See Also:
  • Constructor Details

    • ContextHandler

      public ContextHandler()
      Deprecated.
    • ContextHandler

      public ContextHandler(String contextPath)
      Deprecated.
    • ContextHandler

      public ContextHandler(HandlerContainer parent, String contextPath)
      Deprecated.
  • Method Details

    • getCurrentContext

      public static ContextHandler.Context getCurrentContext()
      Deprecated.
      Get the current ServletContext implementation.
      Returns:
      ServletContext implementation
    • getContextHandler

      public static ContextHandler getContextHandler(ServletContext context)
      Deprecated.
    • getServerInfo

      public static String getServerInfo()
      Deprecated.
    • setServerInfo

      public static void setServerInfo(String serverInfo)
      Deprecated.
    • dump

      public void dump(Appendable out, String indent) throws IOException
      Deprecated.
      Description copied from interface: Dumpable
      Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.
      Specified by:
      dump in interface Dumpable
      Overrides:
      dump in class ContainerLifeCycle
      Parameters:
      out - The appendable to dump to
      indent - The indent to apply after any new lines.
      Throws:
      IOException - if unable to write to Appendable
    • getServletContext

      public ContextHandler.Context getServletContext()
      Deprecated.
    • getAllowNullPathInfo

      @ManagedAttribute("Checks if the /context is not redirected to /context/") public boolean getAllowNullPathInfo()
      Deprecated.
      Returns:
      the allowNullPathInfo true if /context is not redirected to /context/
    • setAllowNullPathInfo

      public void setAllowNullPathInfo(boolean allowNullPathInfo)
      Deprecated.
      Parameters:
      allowNullPathInfo - true if /context is not redirected to /context/
    • setServer

      public void setServer(Server server)
      Deprecated.
      Specified by:
      setServer in interface Handler
      Overrides:
      setServer in class AbstractHandlerContainer
    • isUsingSecurityManager

      public boolean isUsingSecurityManager()
      Deprecated.
    • setUsingSecurityManager

      public void setUsingSecurityManager(boolean usingSecurityManager)
      Deprecated.
    • setVirtualHosts

      public void setVirtualHosts(String[] vhosts)
      Deprecated.
      Set the virtual hosts for the context. Only requests that have a matching host header or fully qualified URL will be passed to that context with a virtual host name. A context with no virtual host names or a null virtual host name is available to all requests that are not served by a context with a matching virtual host name.
      Parameters:
      vhosts - Array of virtual hosts that this context responds to. A null/empty array means any hostname is acceptable. Host names may be String representation of IP addresses. Host names may start with '*.' to wildcard one level of names. Hosts and wildcard hosts may be followed with '@connectorname', in which case they will match only if the the Connector.getName() for the request also matches. If an entry is just '@connectorname' it will match any host if that connector was used. Note - In previous versions if one or more connectorname only entries existed and non of the connectors matched the handler would not match regardless of any hostname entries. If there is one or more connectorname only entries and one or more host only entries but no hostname and connector entries we assume the old behavior and will log a warning. The warning can be removed by removing the host entries that were previously being ignored, or modifying to include a hostname and connectorname entry.
    • addVirtualHosts

      public void addVirtualHosts(String[] virtualHosts)
      Deprecated.
      Either set virtual hosts or add to an existing set of virtual hosts.
      Parameters:
      virtualHosts - Array of virtual hosts that this context responds to. A null/empty array means any hostname is acceptable. Host names may be String representation of IP addresses. Host names may start with '*.' to wildcard one level of names. Hosts and wildcard hosts may be followed with '@connectorname', in which case they will match only if the the Connector.getName() for the request also matches. If an entry is just '@connectorname' it will match any host if that connector was used. Note - In previous versions if one or more connectorname only entries existed and non of the connectors matched the handler would not match regardless of any hostname entries. If there is one or more connectorname only entries and one or more host only entries but no hostname and connector entries we assume the old behavior and will log a warning. The warning can be removed by removing the host entries that were previously being ignored, or modifying to include a hostname and connectorname entry.
    • removeVirtualHosts

      public void removeVirtualHosts(String[] virtualHosts)
      Deprecated.
      Removes an array of virtual host entries, if this removes all entries the _vhosts will be set to null
      Parameters:
      virtualHosts - Array of virtual hosts that this context responds to. A null/empty array means any hostname is acceptable. Host names may be String representation of IP addresses. Host names may start with '*.' to wildcard one level of names. Hosts and wildcard hosts may be followed with '@connectorname', in which case they will match only if the the Connector.getName() for the request also matches. If an entry is just '@connectorname' it will match any host if that connector was used. Note - In previous versions if one or more connectorname only entries existed and non of the connectors matched the handler would not match regardless of any hostname entries. If there is one or more connectorname only entries and one or more host only entries but no hostname and connector entries we assume the old behavior and will log a warning. The warning can be removed by removing the host entries that were previously being ignored, or modifying to include a hostname and connectorname entry.
    • getVirtualHosts

      @ManagedAttribute(value="Virtual hosts accepted by the context", readonly=true) public String[] getVirtualHosts()
      Deprecated.
      Get the virtual hosts for the context. Only requests that have a matching host header or fully qualified URL will be passed to that context with a virtual host name. A context with no virtual host names or a null virtual host name is available to all requests that are not served by a context with a matching virtual host name.
      Returns:
      Array of virtual hosts that this context responds to. A null/empty array means any hostname is acceptable. Host names may be String representation of IP addresses. Host names may start with '*.' to wildcard one level of names. Hosts and wildcard hosts may be followed with '@connectorname', in which case they will match only if the the Connector.getName() for the request also matches. If an entry is just '@connectorname' it will match any host if that connector was used. Note - In previous versions if one or more connectorname only entries existed and non of the connectors matched the handler would not match regardless of any hostname entries. If there is one or more connectorname only entries and one or more host only entries but no hostname and connector entries we assume the old behavior and will log a warning. The warning can be removed by removing the host entries that were previously being ignored, or modifying to include a hostname and connectorname entry.
    • getAttribute

      public Object getAttribute(String name)
      Deprecated.
      Specified by:
      getAttribute in interface Attributes
    • getAttributeNames

      public Enumeration<String> getAttributeNames()
      Deprecated.
      Specified by:
      getAttributeNames in interface Attributes
    • getAttributeNameSet

      public Set<String> getAttributeNameSet()
      Deprecated.
      Specified by:
      getAttributeNameSet in interface Attributes
    • getAttributes

      public Attributes getAttributes()
      Deprecated.
      Returns:
      Returns the attributes.
    • getClassLoader

      public ClassLoader getClassLoader()
      Deprecated.
      Returns:
      Returns the classLoader.
    • getClassPath

      @ManagedAttribute("The file classpath") public String getClassPath()
      Deprecated.
      Make best effort to extract a file classpath from the context classloader
      Returns:
      Returns the classLoader.
    • getContextPath

      @ManagedAttribute("True if URLs are compacted to replace the multiple \'/\'s with a single \'/\'") public String getContextPath()
      Deprecated.
      Returns:
      Returns the contextPath.
    • getContextPathEncoded

      public String getContextPathEncoded()
      Deprecated.
      Returns:
      Returns the encoded contextPath.
    • getRequestContextPath

      public String getRequestContextPath()
      Deprecated.
      Get the context path in a form suitable to be returned from HttpServletRequest.getContextPath() or ServletContext.getContextPath().
      Returns:
      Returns the encoded contextPath, or empty string for root context
    • getInitParameter

      public String getInitParameter(String name)
      Deprecated.
    • setInitParameter

      public String setInitParameter(String name, String value)
      Deprecated.
    • getInitParameterNames

      public Enumeration<String> getInitParameterNames()
      Deprecated.
    • getInitParams

      @ManagedAttribute("Initial Parameter map for the context") public Map<String,String> getInitParams()
      Deprecated.
      Returns:
      Returns the initParams.
    • getDisplayName

      @ManagedAttribute(value="Display name of the Context", readonly=true) public String getDisplayName()
      Deprecated.
    • getEventListeners

      public EventListener[] getEventListeners()
      Deprecated.
    • setEventListeners

      public void setEventListeners(EventListener[] eventListeners)
      Deprecated.
      Set the context event listeners.
      Parameters:
      eventListeners - the event listeners
      See Also:
    • addEventListener

      public void addEventListener(EventListener listener)
      Deprecated.
      Add a context event listeners.
      Parameters:
      listener - the event listener to add
      See Also:
    • removeEventListener

      public void removeEventListener(EventListener listener)
      Deprecated.
      Remove a context event listeners.
      Parameters:
      listener - the event listener to remove
      See Also:
    • isProgrammaticListener

      public boolean isProgrammaticListener(EventListener listener)
      Deprecated.
    • isDurableListener

      public boolean isDurableListener(EventListener listener)
      Deprecated.
    • isShutdown

      @ManagedAttribute("true for graceful shutdown, which allows existing requests to complete") public boolean isShutdown()
      Deprecated.
      Specified by:
      isShutdown in interface Graceful
      Returns:
      true if this context is shutting down
    • shutdown

      public Future<Void> shutdown()
      Deprecated.
      Set shutdown status. This field allows for graceful shutdown of a context. A started context may be put into non accepting state so that existing requests can complete, but no new requests are accepted.
      Specified by:
      shutdown in interface Graceful
    • isAvailable

      public boolean isAvailable()
      Deprecated.
      Returns:
      false if this context is unavailable (sends 503)
    • setAvailable

      public void setAvailable(boolean available)
      Deprecated.
      Set Available status.
      Parameters:
      available - true to set as enabled
    • getLogger

      public Logger getLogger()
      Deprecated.
    • setLogger

      public void setLogger(Logger logger)
      Deprecated.
    • contextInitialized

      public void contextInitialized() throws Exception
      Deprecated.
      Call the ServletContextListeners contextInitialized methods. This can be called from a ServletHandler during the proper sequence of initializing filters, servlets and listeners. However, if there is no ServletHandler, the ContextHandler will call this method during doStart().
      Throws:
      Exception
    • contextDestroyed

      public void contextDestroyed() throws Exception
      Deprecated.
      Call the ServletContextListeners with contextDestroyed. This method can be called from a ServletHandler in the proper sequence of destroying filters, servlets and listeners. If there is no ServletHandler, the ContextHandler must ensure these listeners are called instead.
      Throws:
      Exception
    • checkVirtualHost

      public boolean checkVirtualHost(Request baseRequest)
      Deprecated.
    • checkContextPath

      public boolean checkContextPath(String uri)
      Deprecated.
    • checkContext

      public boolean checkContext(String target, Request baseRequest, HttpServletResponse response) throws IOException
      Deprecated.
      Throws:
      IOException
    • doScope

      public void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
      Deprecated.
      Description copied from class: ScopedHandler
      Scope the handler

      Derived implementations should call ScopedHandler.nextScope(String, Request, HttpServletRequest, HttpServletResponse)

      Overrides:
      doScope in class ScopedHandler
      Parameters:
      target - The target of the request - either a URI or a name.
      baseRequest - The original unwrapped request object.
      request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getRequest() method can be used access the Request object if required.
      response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getResponse() method can be used access the Response object if required.
      Throws:
      IOException - if unable to handle the request or response processing
      ServletException - if unable to handle the request or response due to underlying servlet issue
      See Also:
    • doHandle

      public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
      Deprecated.
      Description copied from class: ScopedHandler
      Do the handler work within the scope.

      Derived implementations should call ScopedHandler.nextHandle(String, Request, HttpServletRequest, HttpServletResponse)

      Specified by:
      doHandle in class ScopedHandler
      Parameters:
      target - The target of the request - either a URI or a name.
      baseRequest - The original unwrapped request object.
      request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getRequest() method can be used access the Request object if required.
      response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getResponse() method can be used access the Response object if required.
      Throws:
      IOException - if unable to handle the request or response processing
      ServletException - if unable to handle the request or response due to underlying servlet issue
      See Also:
    • handle

      public void handle(Request request, Runnable runnable)
      Deprecated.
      Handle a runnable in the scope of this context and a particular request
      Parameters:
      request - The request to scope the thread to (may be null if no particular request is in scope)
      runnable - The runnable to run.
    • handle

      public void handle(Runnable runnable)
      Deprecated.
    • isProtectedTarget

      public boolean isProtectedTarget(String target)
      Deprecated.
      Check the target. Called by ScopedHandler.handle(String, Request, HttpServletRequest, HttpServletResponse) when a target within a context is determined. If the target is protected, 404 is returned.
      Parameters:
      target - the target to test
      Returns:
      true if target is a protected target
    • setProtectedTargets

      public void setProtectedTargets(String[] targets)
      Deprecated.
      Parameters:
      targets - Array of URL prefix. Each prefix is in the form /path and will match either /path exactly or /path/anything
    • getProtectedTargets

      public String[] getProtectedTargets()
      Deprecated.
    • removeAttribute

      public void removeAttribute(String name)
      Deprecated.
      Specified by:
      removeAttribute in interface Attributes
    • setAttribute

      public void setAttribute(String name, Object value)
      Deprecated.
      Specified by:
      setAttribute in interface Attributes
    • setAttributes

      public void setAttributes(Attributes attributes)
      Deprecated.
      Parameters:
      attributes - The attributes to set.
    • clearAttributes

      public void clearAttributes()
      Deprecated.
      Specified by:
      clearAttributes in interface Attributes
    • setManagedAttribute

      @Deprecated public void setManagedAttribute(String name, Object value)
      Deprecated.
    • setClassLoader

      public void setClassLoader(ClassLoader classLoader)
      Deprecated.
      Parameters:
      classLoader - The classLoader to set.
    • setContextPath

      public void setContextPath(String contextPath)
      Deprecated.
      Parameters:
      contextPath - The _contextPath to set.
    • setDisplayName

      public void setDisplayName(String servletContextName)
      Deprecated.
      Parameters:
      servletContextName - The servletContextName to set.
    • getBaseResource

      public Resource getBaseResource()
      Deprecated.
      Returns:
      Returns the resourceBase.
    • getResourceBase

      @ManagedAttribute("document root for context") public String getResourceBase()
      Deprecated.
      Returns:
      Returns the base resource as a string.
    • setBaseResource

      public void setBaseResource(Resource base)
      Deprecated.
      Set the base resource for this context.
      Parameters:
      base - The resource used as the base for all static content of this context.
      See Also:
    • setResourceBase

      public void setResourceBase(String resourceBase)
      Deprecated.
      Set the base resource for this context.
      Parameters:
      resourceBase - A string representing the base resource for the context. Any string accepted by Resource.newResource(String) may be passed and the call is equivalent to setBaseResource(newResource(resourceBase));
    • getMimeTypes

      public MimeTypes getMimeTypes()
      Deprecated.
      Returns:
      Returns the mimeTypes.
    • setMimeTypes

      public void setMimeTypes(MimeTypes mimeTypes)
      Deprecated.
      Parameters:
      mimeTypes - The mimeTypes to set.
    • setWelcomeFiles

      public void setWelcomeFiles(String[] files)
      Deprecated.
    • getWelcomeFiles

      @ManagedAttribute(value="Partial URIs of directory welcome files", readonly=true) public String[] getWelcomeFiles()
      Deprecated.
      Returns:
      The names of the files which the server should consider to be welcome files in this context.
      See Also:
    • getErrorHandler

      @ManagedAttribute("The error handler to use for the context") public ErrorHandler getErrorHandler()
      Deprecated.
      Returns:
      Returns the errorHandler.
    • setErrorHandler

      public void setErrorHandler(ErrorHandler errorHandler)
      Deprecated.
      Parameters:
      errorHandler - The errorHandler to set.
    • getMaxFormContentSize

      @ManagedAttribute("The maximum content size") public int getMaxFormContentSize()
      Deprecated.
    • setMaxFormContentSize

      public void setMaxFormContentSize(int maxSize)
      Deprecated.
      Set the maximum size of a form post, to protect against DOS attacks from large forms.
      Parameters:
      maxSize - the maximum size of the form content (in bytes)
    • getMaxFormKeys

      public int getMaxFormKeys()
      Deprecated.
    • setMaxFormKeys

      public void setMaxFormKeys(int max)
      Deprecated.
      Set the maximum number of form Keys to protect against DOS attack from crafted hash keys.
      Parameters:
      max - the maximum number of form keys
    • isCompactPath

      public boolean isCompactPath()
      Deprecated.
      Returns:
      True if URLs are compacted to replace multiple '/'s with a single '/'
    • setCompactPath

      public void setCompactPath(boolean compactPath)
      Deprecated.
      Parameters:
      compactPath - True if URLs are compacted to replace multiple '/'s with a single '/'
    • toString

      public String toString()
      Deprecated.
      Overrides:
      toString in class AbstractLifeCycle
    • loadClass

      public Class<?> loadClass(String className) throws ClassNotFoundException
      Deprecated.
      Throws:
      ClassNotFoundException
    • addLocaleEncoding

      public void addLocaleEncoding(String locale, String encoding)
      Deprecated.
    • getLocaleEncoding

      public String getLocaleEncoding(String locale)
      Deprecated.
    • getLocaleEncoding

      public String getLocaleEncoding(Locale locale)
      Deprecated.
      Get the character encoding for a locale. The full locale name is first looked up in the map of encodings. If no encoding is found, then the locale language is looked up.
      Parameters:
      locale - a Locale value
      Returns:
      a String representing the character encoding for the locale or null if none found.
    • getLocaleEncodings

      public Map<String,String> getLocaleEncodings()
      Deprecated.
      Get all of the locale encodings
      Returns:
      a map of all the locale encodings: key is name of the locale and value is the char encoding
    • getResource

      public Resource getResource(String path) throws MalformedURLException
      Deprecated.
      Throws:
      MalformedURLException
    • checkAlias

      public boolean checkAlias(String path, Resource resource)
      Deprecated.
      Parameters:
      path - the path to check the alias for
      resource - the resource
      Returns:
      True if the alias is OK
    • newResource

      public Resource newResource(URL url) throws IOException
      Deprecated.
      Convert URL to Resource wrapper for Resource.newResource(URL) enables extensions to provide alternate resource implementations.
      Parameters:
      url - the url to convert to a Resource
      Returns:
      the Resource for that url
      Throws:
      IOException - if unable to create a Resource from the URL
    • newResource

      public Resource newResource(URI uri) throws IOException
      Deprecated.
      Convert URL to Resource wrapper for Resource.newResource(URL) enables extensions to provide alternate resource implementations.
      Parameters:
      uri - the URI to convert to a Resource
      Returns:
      the Resource for that URI
      Throws:
      IOException - if unable to create a Resource from the URL
    • newResource

      public Resource newResource(String urlOrPath) throws IOException
      Deprecated.
      Convert a URL or path to a Resource. The default implementation is a wrapper for Resource.newResource(String).
      Parameters:
      urlOrPath - The URL or path to convert
      Returns:
      The Resource for the URL/path
      Throws:
      IOException - The Resource could not be created.
    • getResourcePaths

      public Set<String> getResourcePaths(String path)
      Deprecated.
    • addAliasCheck

      public void addAliasCheck(ContextHandler.AliasCheck check)
      Deprecated.
      Add an AliasCheck instance to possibly permit aliased resources
      Parameters:
      check - The alias checker
    • getAliasChecks

      public List<ContextHandler.AliasCheck> getAliasChecks()
      Deprecated.
      Returns:
      Immutable list of Alias checks
    • setAliasChecks

      public void setAliasChecks(List<ContextHandler.AliasCheck> checks)
      Deprecated.
      Parameters:
      checks - list of AliasCheck instances
    • clearAliasChecks

      public void clearAliasChecks()
      Deprecated.
      clear the list of AliasChecks