Class PaxWebServletHolder

  • All Implemented Interfaces:
    Comparable<org.eclipse.jetty.servlet.ServletHolder>, org.eclipse.jetty.server.UserIdentity.Scope, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.LifeCycle

    public class PaxWebServletHolder
    extends org.eclipse.jetty.servlet.ServletHolder

    Jetty ServletHolder that can perform tasks described in Http Service and Whiteboard Service specifications:

    • Servlet instance creation using class name and proper class loader (or instantiation of given class)
    • Servlet instance retrieval from OSGi registry (to ensure proper behavior if the service is bundle scoped or prototype scoped ServiceFactory)

    • Nested Class Summary

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

        org.eclipse.jetty.servlet.ServletHolder.Config, org.eclipse.jetty.servlet.ServletHolder.JspContainer, org.eclipse.jetty.servlet.ServletHolder.Registration, org.eclipse.jetty.servlet.ServletHolder.WrapFunction, org.eclipse.jetty.servlet.ServletHolder.Wrapper
      • Nested classes/interfaces inherited from class org.eclipse.jetty.servlet.Holder

        org.eclipse.jetty.servlet.Holder.HolderConfig, org.eclipse.jetty.servlet.Holder.HolderRegistration
      • 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.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.ServletHolder

        APACHE_SENTINEL_CLASS, JSP_GENERATED_PACKAGE_NAME
      • 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
      PaxWebServletHolder​(org.ops4j.pax.web.service.spi.model.elements.ServletModel servletModel, org.ops4j.pax.web.service.spi.model.OsgiContextModel osgiContextModel, org.ops4j.pax.web.service.spi.servlet.OsgiServletContext osgiServletContext)
      Initialize PaxWebServletHolder with ServletModel and this particular OsgiContextModel in which' context we're adding given servlet to Jetty.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroyInstance​(Object o)  
      void doStart()  
      protected javax.servlet.Servlet getInstance()
      This method is called first by org.eclipse.jetty.servlet.ServletHolder#initServlet() in expectance of existing Servlet instance.
      org.eclipse.jetty.servlet.ServletMapping getMapping()
      Gets a ServletMapping that was used during registration of this ServletHolder in single PaxWebServletHandler.
      org.ops4j.pax.web.service.spi.model.OsgiContextModel getOsgiContextModel()  
      org.osgi.framework.Bundle getRegisteringBundle()  
      javax.servlet.ServletContext getServletContext()  
      org.ops4j.pax.web.service.spi.model.elements.ServletModel getServletModel()  
      org.ops4j.pax.web.service.WebContainerContext getWebContainerContext()  
      boolean is404()  
      protected javax.servlet.Servlet newInstance()
      If no existing instance of Servlet is available, this method is supposed to create one using class/className
      void prepare​(org.eclipse.jetty.server.Request baseRequest, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)
      An override only to make it public, so it can be called from PaxWebServletHandler.
      void setMapping​(org.eclipse.jetty.servlet.ServletMapping mapping)
      Allows keeping ServletMapping that was used together with this ServletHolder
      void setWhiteboardTCCL​(boolean whiteboardTCCL)  
      • Methods inherited from class org.eclipse.jetty.servlet.ServletHolder

        appendPath, checkServletType, compareTo, doStop, dump, ensureInstance, equals, getClassNameForJsp, getContextHandler, getContextPath, getForcedPath, getInitOrder, getJspPackagePrefix, getNameOfJspClass, getPackageOfJspClass, getRegistration, getRoleRefMap, getRunAsRole, getServlet, getServletInstance, getUnavailableException, getUserRoleLink, handle, hashCode, initialize, initJspServlet, initMultiPart, isAvailable, isEnabled, isJspServlet, isJspServlet, setEnabled, setForcedPath, setInitOrder, setRunAsRole, setServlet, setUserRoleLink, toString
      • Methods inherited from class org.eclipse.jetty.servlet.Holder

        dump, getDisplayName, getInitParameter, getInitParameterNames, getInitParameters, getName, isAsyncSupported, setAsyncSupported, setClassName, setDisplayName, setHeldClass, setInitParameter, setInitParameters, setInstance, setName
      • Methods inherited from class org.eclipse.jetty.servlet.BaseHolder

        getClassName, getHeldClass, getServletHandler, getSource, illegalStateIfContextStarted, isInstance, setServletHandler, unwrap, wrap
      • Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

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

        dumpSelf
      • Methods inherited from interface org.eclipse.jetty.server.UserIdentity.Scope

        getName
    • Constructor Detail

      • PaxWebServletHolder

        public PaxWebServletHolder​(org.ops4j.pax.web.service.spi.model.elements.ServletModel servletModel,
                                   org.ops4j.pax.web.service.spi.model.OsgiContextModel osgiContextModel,
                                   org.ops4j.pax.web.service.spi.servlet.OsgiServletContext osgiServletContext)
        Initialize PaxWebServletHolder with ServletModel and this particular OsgiContextModel in which' context we're adding given servlet to Jetty.
        Parameters:
        servletModel -
        osgiContextModel -
        osgiServletContext - ServletContextHelper specific ServletContext
    • Method Detail

      • getServletModel

        public org.ops4j.pax.web.service.spi.model.elements.ServletModel getServletModel()
      • getRegisteringBundle

        public org.osgi.framework.Bundle getRegisteringBundle()
      • getOsgiContextModel

        public org.ops4j.pax.web.service.spi.model.OsgiContextModel getOsgiContextModel()
      • getServletContext

        public javax.servlet.ServletContext getServletContext()
      • getWebContainerContext

        public org.ops4j.pax.web.service.WebContainerContext getWebContainerContext()
      • is404

        public boolean is404()
      • doStart

        public void doStart()
                     throws Exception
        Overrides:
        doStart in class org.eclipse.jetty.servlet.ServletHolder
        Throws:
        Exception
      • getInstance

        protected javax.servlet.Servlet getInstance()

        This method is called first by org.eclipse.jetty.servlet.ServletHolder#initServlet() in expectance of existing Servlet instance.

        Http Service / Whiteboard Service specification describe scenario where server instance (and also other Whiteboard instances, including ServletContextHelper itself) are obtained from OSGi Service Registry - knowing that Servlet may come from ServiceFactory. That's why we override this method for this special purpose.

        Overrides:
        getInstance in class org.eclipse.jetty.servlet.BaseHolder<javax.servlet.Servlet>
        Returns:
      • destroyInstance

        public void destroyInstance​(Object o)
        Overrides:
        destroyInstance in class org.eclipse.jetty.servlet.ServletHolder
      • prepare

        public void prepare​(org.eclipse.jetty.server.Request baseRequest,
                            javax.servlet.ServletRequest request,
                            javax.servlet.ServletResponse response)
                     throws javax.servlet.ServletException,
                            javax.servlet.UnavailableException
        An override only to make it public, so it can be called from PaxWebServletHandler.
        Overrides:
        prepare in class org.eclipse.jetty.servlet.ServletHolder
        Parameters:
        baseRequest -
        request -
        response -
        Throws:
        javax.servlet.ServletException
        javax.servlet.UnavailableException
      • setMapping

        public void setMapping​(org.eclipse.jetty.servlet.ServletMapping mapping)
        Allows keeping ServletMapping that was used together with this ServletHolder
        Parameters:
        mapping -
      • getMapping

        public org.eclipse.jetty.servlet.ServletMapping getMapping()
        Gets a ServletMapping that was used during registration of this ServletHolder in single PaxWebServletHandler.
        Returns:
      • setWhiteboardTCCL

        public void setWhiteboardTCCL​(boolean whiteboardTCCL)