Class ServletHandler

  • All Implemented Interfaces:
    org.eclipse.jetty.server.Handler, org.eclipse.jetty.server.HandlerContainer, org.eclipse.jetty.util.component.Container, org.eclipse.jetty.util.component.Destroyable, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.Dumpable.DumpableContainer, org.eclipse.jetty.util.component.LifeCycle

    @ManagedObject("Servlet Handler")
    public class ServletHandler
    extends org.eclipse.jetty.server.handler.ScopedHandler
    Servlet HttpHandler.

    This handler maps requests to servlets that implement the javax.servlet.http.HttpServlet API.

    This handler does not implement the full J2EE features and is intended to be used directly when a full web application is not required. If a Web application is required, then this handler should be used as part of a org.eclipse.jetty.webapp.WebAppContext.

    Unless run as part of a ServletContextHandler or derivative, the initialize() method must be called manually after start().

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ServletHandler.Default404Servlet  
      • Nested classes/interfaces inherited from class org.eclipse.jetty.server.handler.AbstractHandler

        org.eclipse.jetty.server.handler.AbstractHandler.ErrorDispatchHandler
      • Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container

        org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable

        org.eclipse.jetty.util.component.Dumpable.DumpableContainer
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

        org.eclipse.jetty.util.component.LifeCycle.Listener
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String __DEFAULT_SERVLET  
      protected java.util.concurrent.ConcurrentMap<java.lang.String,​javax.servlet.FilterChain>[] _chainCache  
      • Fields inherited from class org.eclipse.jetty.server.handler.ScopedHandler

        _nextScope, _outerScope
      • Fields inherited from class org.eclipse.jetty.server.handler.HandlerWrapper

        _handler
      • Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
      • Fields inherited from interface org.eclipse.jetty.util.component.Dumpable

        KEY
    • Constructor Summary

      Constructors 
      Constructor Description
      ServletHandler()
      Constructor.
    • Field Detail

      • __DEFAULT_SERVLET

        public static final java.lang.String __DEFAULT_SERVLET
        See Also:
        Constant Field Values
      • _chainCache

        protected final java.util.concurrent.ConcurrentMap<java.lang.String,​javax.servlet.FilterChain>[] _chainCache
    • Constructor Detail

      • ServletHandler

        public ServletHandler()
        Constructor.
    • Method Detail

      • isDumpable

        public boolean isDumpable​(java.lang.Object o)
      • dump

        public void dump​(java.lang.Appendable out,
                         java.lang.String indent)
                  throws java.io.IOException
        Specified by:
        dump in interface org.eclipse.jetty.util.component.Dumpable
        Overrides:
        dump in class org.eclipse.jetty.util.component.ContainerLifeCycle
        Throws:
        java.io.IOException
      • doStart

        protected void doStart()
                        throws java.lang.Exception
        Overrides:
        doStart in class org.eclipse.jetty.server.handler.ScopedHandler
        Throws:
        java.lang.Exception
      • isEnsureDefaultServlet

        public boolean isEnsureDefaultServlet()
        Returns:
        true if ServletHandler always has a default servlet, using ServletHandler.Default404Servlet if no other default servlet is configured.
      • setEnsureDefaultServlet

        public void setEnsureDefaultServlet​(boolean ensureDefaultServlet)
        Parameters:
        ensureDefaultServlet - true if ServletHandler always has a default servlet, using ServletHandler.Default404Servlet if no other default servlet is configured.
      • start

        protected void start​(org.eclipse.jetty.util.component.LifeCycle l)
                      throws java.lang.Exception
        Overrides:
        start in class org.eclipse.jetty.util.component.ContainerLifeCycle
        Throws:
        java.lang.Exception
      • stop

        protected void stop​(org.eclipse.jetty.util.component.LifeCycle l)
                     throws java.lang.Exception
        Overrides:
        stop in class org.eclipse.jetty.util.component.ContainerLifeCycle
        Throws:
        java.lang.Exception
      • doStop

        protected void doStop()
                       throws java.lang.Exception
        Overrides:
        doStop in class org.eclipse.jetty.server.handler.AbstractHandler
        Throws:
        java.lang.Exception
      • getFilterMappings

        @ManagedAttribute(value="filters",
                          readonly=true)
        public FilterMapping[] getFilterMappings()
      • getFilters

        @ManagedAttribute(value="filters",
                          readonly=true)
        public FilterHolder[] getFilters()
      • getHolderEntry

        @Deprecated
        public org.eclipse.jetty.http.pathmap.MappedResource<ServletHolder> getHolderEntry​(java.lang.String target)
        Deprecated.
        ServletHolder matching path.
        Parameters:
        target - Path within _context or servlet name
        Returns:
        PathMap Entries pathspec to ServletHolder
      • getServletContext

        public javax.servlet.ServletContext getServletContext()
      • getServletMappings

        @ManagedAttribute(value="mappings of servlets",
                          readonly=true)
        public ServletMapping[] getServletMappings()
      • getServletMapping

        public ServletMapping getServletMapping​(java.lang.String pathSpec)
        Get the ServletMapping matching the path
        Parameters:
        pathSpec - the path spec
        Returns:
        the servlet mapping for the path spec (or null if not found)
      • getServlets

        @ManagedAttribute(value="servlets",
                          readonly=true)
        public ServletHolder[] getServlets()
      • getServlets

        public java.util.List<ServletHolder> getServlets​(java.lang.Class<?> clazz)
      • getServlet

        public ServletHolder getServlet​(java.lang.String name)
      • doScope

        public void doScope​(java.lang.String target,
                            org.eclipse.jetty.server.Request baseRequest,
                            javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response)
                     throws java.io.IOException,
                            javax.servlet.ServletException
        Overrides:
        doScope in class org.eclipse.jetty.server.handler.ScopedHandler
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • doHandle

        public void doHandle​(java.lang.String target,
                             org.eclipse.jetty.server.Request baseRequest,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws java.io.IOException,
                             javax.servlet.ServletException
        Specified by:
        doHandle in class org.eclipse.jetty.server.handler.ScopedHandler
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • getMatchedServlet

        public org.eclipse.jetty.http.pathmap.MatchedResource<ServletHolder> getMatchedServlet​(java.lang.String target)
        ServletHolder matching target path.
        Parameters:
        target - Path within _context or servlet name
        Returns:
        MatchedResource, pointing to the MappedResource for the ServletHolder, and also the pathspec specific name/info sections for the match. Named servlets have a null PathSpec and MatchedResource.
      • getMappedServlet

        @Deprecated
        public org.eclipse.jetty.http.pathmap.MappedResource<ServletHolder> getMappedServlet​(java.lang.String target)
        Deprecated.
        ServletHolder matching path.
        Parameters:
        target - Path within _context or servlet name
        Returns:
        MappedResource to the ServletHolder. Named servlets have a null PathSpec
      • getFilterChain

        protected javax.servlet.FilterChain getFilterChain​(org.eclipse.jetty.server.Request baseRequest,
                                                           java.lang.String pathInContext,
                                                           ServletHolder servletHolder)
      • newFilterChain

        protected javax.servlet.FilterChain newFilterChain​(FilterHolder filterHolder,
                                                           javax.servlet.FilterChain chain)
        Create a FilterChain that calls the passed filter with the passed chain
        Parameters:
        filterHolder - The filter to invoke
        chain - The chain to pass to the filter
        Returns:
        A FilterChain that invokes the filter with the chain
      • invalidateChainsCache

        protected void invalidateChainsCache()
      • isAvailable

        public boolean isAvailable()
        Returns:
        true if the handler is started and there are no unavailable servlets
      • setStartWithUnavailable

        public void setStartWithUnavailable​(boolean start)
        Parameters:
        start - True if this handler will start with unavailable servlets
      • isAllowDuplicateMappings

        public boolean isAllowDuplicateMappings()
        Returns:
        the allowDuplicateMappings
      • setAllowDuplicateMappings

        public void setAllowDuplicateMappings​(boolean allowDuplicateMappings)
        Parameters:
        allowDuplicateMappings - the allowDuplicateMappings to set
      • isStartWithUnavailable

        public boolean isStartWithUnavailable()
        Returns:
        True if this handler will start with unavailable servlets
      • initialize

        public void initialize()
                        throws java.lang.Exception
        Initialize filters and load-on-startup servlets.
        Throws:
        java.lang.Exception - if unable to initialize
      • isInitialized

        public boolean isInitialized()
        Returns:
        true if initialized has been called, false otherwise
      • initializeHolders

        protected void initializeHolders​(BaseHolder<?>[] holders)
      • isFilterChainsCached

        public boolean isFilterChainsCached()
        Returns:
        whether the filter chains are cached.
      • addListener

        public void addListener​(ListenerHolder listener)
        Add a holder for a listener
        Parameters:
        listener - the listener for the holder
      • setListeners

        public void setListeners​(ListenerHolder[] listeners)
      • newServletHolder

        public ServletHolder newServletHolder​(Source source)
        Add a new servlet holder
        Parameters:
        source - the holder source
        Returns:
        the servlet holder
      • addServletWithMapping

        public ServletHolder addServletWithMapping​(java.lang.String className,
                                                   java.lang.String pathSpec)
        Convenience method to add a servlet.
        Parameters:
        className - the class name
        pathSpec - the path spec
        Returns:
        The servlet holder.
      • addServletWithMapping

        public ServletHolder addServletWithMapping​(java.lang.Class<? extends javax.servlet.Servlet> servlet,
                                                   java.lang.String pathSpec)
        Convenience method to add a servlet.
        Parameters:
        servlet - the servlet class
        pathSpec - the path spec
        Returns:
        The servlet holder.
      • addServletWithMapping

        public void addServletWithMapping​(ServletHolder servlet,
                                          java.lang.String pathSpec)
        Convenience method to add a servlet.
        Parameters:
        servlet - servlet holder to add
        pathSpec - servlet mappings for the servletHolder
      • addServlet

        public void addServlet​(ServletHolder holder)
        Convenience method to add a pre-constructed ServletHolder.
        Parameters:
        holder - the servlet holder
      • addServletMapping

        public void addServletMapping​(ServletMapping mapping)
        Convenience method to add a pre-constructed ServletMapping.
        Parameters:
        mapping - the servlet mapping
      • setServletSecurity

        public java.util.Set<java.lang.String> setServletSecurity​(javax.servlet.ServletRegistration.Dynamic registration,
                                                                  javax.servlet.ServletSecurityElement servletSecurityElement)
      • getFilter

        public FilterHolder getFilter​(java.lang.String name)
      • addFilterWithMapping

        public FilterHolder addFilterWithMapping​(java.lang.Class<? extends javax.servlet.Filter> filter,
                                                 java.lang.String pathSpec,
                                                 java.util.EnumSet<javax.servlet.DispatcherType> dispatches)
        Convenience method to add a filter.
        Parameters:
        filter - class of filter to create
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
        Returns:
        The filter holder.
      • addFilterWithMapping

        public FilterHolder addFilterWithMapping​(java.lang.String className,
                                                 java.lang.String pathSpec,
                                                 java.util.EnumSet<javax.servlet.DispatcherType> dispatches)
        Convenience method to add a filter.
        Parameters:
        className - of filter
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
        Returns:
        The filter holder.
      • addFilterWithMapping

        public void addFilterWithMapping​(FilterHolder holder,
                                         java.lang.String pathSpec,
                                         java.util.EnumSet<javax.servlet.DispatcherType> dispatches)
        Convenience method to add a filter.
        Parameters:
        holder - filter holder to add
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
      • addFilterWithMapping

        public FilterHolder addFilterWithMapping​(java.lang.Class<? extends javax.servlet.Filter> filter,
                                                 java.lang.String pathSpec,
                                                 int dispatches)
        Convenience method to add a filter.
        Parameters:
        filter - class of filter to create
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
        Returns:
        The filter holder.
      • addFilterWithMapping

        public FilterHolder addFilterWithMapping​(java.lang.String className,
                                                 java.lang.String pathSpec,
                                                 int dispatches)
        Convenience method to add a filter.
        Parameters:
        className - of filter
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
        Returns:
        The filter holder.
      • addFilterWithMapping

        public void addFilterWithMapping​(FilterHolder holder,
                                         java.lang.String pathSpec,
                                         int dispatches)
        Convenience method to add a filter.
        Parameters:
        holder - filter holder to add
        pathSpec - filter mappings for filter
        dispatches - see FilterMapping.setDispatches(int)
      • addFilter

        @Deprecated
        public FilterHolder addFilter​(java.lang.String className,
                                      java.lang.String pathSpec,
                                      java.util.EnumSet<javax.servlet.DispatcherType> dispatches)
        Convenience method to add a filter with a mapping
        Parameters:
        className - the filter class name
        pathSpec - the path spec
        dispatches - the dispatcher types for this filter
        Returns:
        the filter holder created
      • addFilter

        public void addFilter​(FilterHolder filter,
                              FilterMapping filterMapping)
        Convenience method to add a filter and mapping
        Parameters:
        filter - the filter holder
        filterMapping - the filter mapping
      • addFilter

        public void addFilter​(FilterHolder filter)
        Convenience method to add a preconstructed FilterHolder
        Parameters:
        filter - the filter holder
      • addFilterMapping

        public void addFilterMapping​(FilterMapping mapping)
        Convenience method to add a preconstructed FilterMapping
        Parameters:
        mapping - the filter mapping
      • prependFilterMapping

        public void prependFilterMapping​(FilterMapping mapping)
        Convenience method to add a preconstructed FilterMapping
        Parameters:
        mapping - the filter mapping
      • insertFilterMapping

        protected FilterMapping[] insertFilterMapping​(FilterMapping mapping,
                                                      int pos,
                                                      boolean before)
        Insert a filtermapping in the list
        Parameters:
        mapping - the FilterMapping to add
        pos - the position in the existing arry at which to add it
        before - if true, insert before pos, if false insert after it
        Returns:
        the new FilterMappings post-insert
      • updateNameMappings

        protected void updateNameMappings()
      • asPathSpec

        protected org.eclipse.jetty.http.pathmap.PathSpec asPathSpec​(java.lang.String pathSpec)
      • updateMappings

        protected void updateMappings()
      • notFound

        protected void notFound​(org.eclipse.jetty.server.Request baseRequest,
                                javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response)
                         throws java.io.IOException,
                                javax.servlet.ServletException
        Throws:
        java.io.IOException
        javax.servlet.ServletException
      • containsFilterHolder

        protected boolean containsFilterHolder​(FilterHolder holder)
      • containsServletHolder

        protected boolean containsServletHolder​(ServletHolder holder)
      • setFilterChainsCached

        public void setFilterChainsCached​(boolean filterChainsCached)
        Parameters:
        filterChainsCached - The filterChainsCached to set.
      • setFilterMappings

        public void setFilterMappings​(FilterMapping[] filterMappings)
        Parameters:
        filterMappings - The filterMappings to set.
      • setFilters

        public void setFilters​(FilterHolder[] holders)
      • setServletMappings

        public void setServletMappings​(ServletMapping[] servletMappings)
        Parameters:
        servletMappings - The servletMappings to set.
      • setServlets

        public void setServlets​(ServletHolder[] holders)
        Set Servlets.
        Parameters:
        holders - Array of servlets to define
      • getMaxFilterChainsCacheSize

        public int getMaxFilterChainsCacheSize()
        Returns:
        The maximum entries in a filter chain cache.
      • setMaxFilterChainsCacheSize

        public void setMaxFilterChainsCacheSize​(int maxFilterChainsCacheSize)
        Set the maximum filter chain cache size. Filter chains are cached if isFilterChainsCached() is true. If the max cache size is greater than zero, then the cache is flushed whenever it grows to be this size.
        Parameters:
        maxFilterChainsCacheSize - the maximum number of entries in a filter chain cache.