Class PaxWebServletHandler

  • 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

    public class PaxWebServletHandler
    extends org.eclipse.jetty.servlet.ServletHandler

    Specialized ServletHandler to be used inside specialized ServletContextHandler for Pax Web specific invocation and management of servlets.

    Remember (a note to myself as well), ServletHandler in Jetty is not for handling single servlet, it's for handling all the servlets within single ServletContextHandler.

    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.eclipse.jetty.servlet.ServletHandler

        org.eclipse.jetty.servlet.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 inherited from class org.eclipse.jetty.servlet.ServletHandler

        __DEFAULT_SERVLET, _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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addFilterWithMapping​(org.eclipse.jetty.servlet.FilterHolder holder, String pathSpec, EnumSet<javax.servlet.DispatcherType> dispatches)
      Override the method from ServletContextHandler just because org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer adds FilterHolder directly, while we use PaxWebFilterHolder array.
      void addServletWithMapping​(PaxWebServletHolder holder, org.eclipse.jetty.servlet.ServletMapping mapping)
      Special method that makes it easier later to remove given holder with associated mapping
      void doHandle​(String target, org.eclipse.jetty.server.Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      Jetty ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) is not just about calling a servlet.
      protected void doStart()  
      protected void doStop()  
      org.ops4j.pax.web.service.spi.model.OsgiContextModel getDefaultOsgiContextModel()  
      org.ops4j.pax.web.service.spi.servlet.OsgiServletContext getDefaultServletContext()  
      protected javax.servlet.FilterChain getFilterChain​(org.eclipse.jetty.server.Request baseRequest, String pathInContext, org.eclipse.jetty.servlet.ServletHolder servletHolder)
      Overriden, because we want our own cache management, where key includes proper OSGi context
      protected javax.servlet.FilterChain getOsgiFilterChain​(org.eclipse.jetty.server.Request baseRequest, String pathInContext, org.eclipse.jetty.servlet.ServletHolder servletHolder)  
      List<org.ops4j.pax.web.service.spi.servlet.PreprocessorFilterConfig> getPreprocessors()  
      void initialize()  
      protected javax.servlet.FilterChain newFilterChain​(org.eclipse.jetty.servlet.FilterHolder filterHolder, javax.servlet.FilterChain chain)  
      void removeServletWithMapping​(org.ops4j.pax.web.service.spi.model.elements.ServletModel model)
      Removes PaxWebServletHolder and its mapping - both associated with given ServletModel
      void setDefaultOsgiContextModel​(org.ops4j.pax.web.service.spi.model.OsgiContextModel defaultOsgiContextModel, org.ops4j.pax.web.service.WebContainerContext resolvedWebContainerContext)  
      void setDefaultServletContext​(org.ops4j.pax.web.service.spi.servlet.OsgiServletContext defaultServletContext)  
      void setServlets​(org.eclipse.jetty.servlet.ServletHolder[] holders)  
      • Methods inherited from class org.eclipse.jetty.servlet.ServletHandler

        addFilter, addFilter, addFilter, addFilterMapping, addFilterWithMapping, addFilterWithMapping, addFilterWithMapping, addFilterWithMapping, addFilterWithMapping, addListener, addServlet, addServletMapping, addServletWithMapping, addServletWithMapping, addServletWithMapping, asPathSpec, containsFilterHolder, containsServletHolder, doScope, dump, getFilter, getFilterMappings, getFilters, getHolderEntry, getIdentityService, getListeners, getMappedServlet, getMatchedServlet, getMaxFilterChainsCacheSize, getServlet, getServletContext, getServletContextHandler, getServletMapping, getServletMappings, getServlets, getServlets, initializeHolders, insertFilterMapping, invalidateChainsCache, isAllowDuplicateMappings, isAvailable, isDumpable, isEnsureDefaultServlet, isFilterChainsCached, isInitialized, isStartWithUnavailable, newFilterHolder, newListenerHolder, newServletHolder, notFound, prependFilterMapping, setAllowDuplicateMappings, setEnsureDefaultServlet, setFilterChainsCached, setFilterMappings, setFilters, setListeners, setMaxFilterChainsCacheSize, setServletMappings, setServletSecurity, setStartWithUnavailable, start, stop, updateMappings, updateNameMappings
      • Methods inherited from class org.eclipse.jetty.server.handler.ScopedHandler

        handle, nextHandle, nextScope
      • Methods inherited from class org.eclipse.jetty.server.handler.HandlerWrapper

        destroy, expandChildren, getHandler, getHandlers, insertHandler, setHandler
      • Methods inherited from class org.eclipse.jetty.server.handler.AbstractHandlerContainer

        doShutdown, expandHandler, findContainerOf, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass, setServer
      • Methods inherited from class org.eclipse.jetty.server.handler.AbstractHandler

        doError, getServer
      • Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle

        addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, unmanage, updateBean, updateBean, updateBeans
      • Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop, toString
      • Methods inherited from interface org.eclipse.jetty.util.component.Dumpable

        dumpSelf
      • Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle

        addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
    • Method Detail

      • setDefaultServletContext

        public void setDefaultServletContext​(org.ops4j.pax.web.service.spi.servlet.OsgiServletContext defaultServletContext)
      • getDefaultServletContext

        public org.ops4j.pax.web.service.spi.servlet.OsgiServletContext getDefaultServletContext()
      • setDefaultOsgiContextModel

        public void setDefaultOsgiContextModel​(org.ops4j.pax.web.service.spi.model.OsgiContextModel defaultOsgiContextModel,
                                               org.ops4j.pax.web.service.WebContainerContext resolvedWebContainerContext)
      • getDefaultOsgiContextModel

        public org.ops4j.pax.web.service.spi.model.OsgiContextModel getDefaultOsgiContextModel()
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.eclipse.jetty.servlet.ServletHandler
        Throws:
        Exception
      • initialize

        public void initialize()
                        throws Exception
        Overrides:
        initialize in class org.eclipse.jetty.servlet.ServletHandler
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.eclipse.jetty.servlet.ServletHandler
        Throws:
        Exception
      • setServlets

        public void setServlets​(org.eclipse.jetty.servlet.ServletHolder[] holders)
        Overrides:
        setServlets in class org.eclipse.jetty.servlet.ServletHandler
      • addServletWithMapping

        public void addServletWithMapping​(PaxWebServletHolder holder,
                                          org.eclipse.jetty.servlet.ServletMapping mapping)
        Special method that makes it easier later to remove given holder with associated mapping
        Parameters:
        holder -
        mapping -
      • addFilterWithMapping

        public void addFilterWithMapping​(org.eclipse.jetty.servlet.FilterHolder holder,
                                         String pathSpec,
                                         EnumSet<javax.servlet.DispatcherType> dispatches)
        Override the method from ServletContextHandler just because org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer adds FilterHolder directly, while we use PaxWebFilterHolder array.
        Overrides:
        addFilterWithMapping in class org.eclipse.jetty.servlet.ServletHandler
        Parameters:
        holder -
        pathSpec -
        dispatches -
      • removeServletWithMapping

        public void removeServletWithMapping​(org.ops4j.pax.web.service.spi.model.elements.ServletModel model)
        Removes PaxWebServletHolder and its mapping - both associated with given ServletModel
        Parameters:
        model -
      • doHandle

        public void doHandle​(String target,
                             org.eclipse.jetty.server.Request baseRequest,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws IOException,
                             javax.servlet.ServletException
        Jetty ServletHandler.doHandle(String, Request, HttpServletRequest, HttpServletResponse) is not just about calling a servlet. It's about preparation of entire chain of invocation and mapping of incoming request into some target servlet + associated filters.
        Overrides:
        doHandle in class org.eclipse.jetty.servlet.ServletHandler
        Parameters:
        target -
        baseRequest -
        request -
        response -
        Throws:
        IOException
        javax.servlet.ServletException
      • getOsgiFilterChain

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

        protected javax.servlet.FilterChain getFilterChain​(org.eclipse.jetty.server.Request baseRequest,
                                                           String pathInContext,
                                                           org.eclipse.jetty.servlet.ServletHolder servletHolder)
        Overriden, because we want our own cache management, where key includes proper OSGi context
        Overrides:
        getFilterChain in class org.eclipse.jetty.servlet.ServletHandler
        Parameters:
        baseRequest -
        pathInContext -
        servletHolder -
        Returns:
      • newFilterChain

        protected javax.servlet.FilterChain newFilterChain​(org.eclipse.jetty.servlet.FilterHolder filterHolder,
                                                           javax.servlet.FilterChain chain)
        Overrides:
        newFilterChain in class org.eclipse.jetty.servlet.ServletHandler
      • getPreprocessors

        public List<org.ops4j.pax.web.service.spi.servlet.PreprocessorFilterConfig> getPreprocessors()