Class ServletHolder

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

    @ManagedObject("Servlet Holder")
    public class ServletHolder
    extends Holder<javax.servlet.Servlet>
    implements org.eclipse.jetty.server.UserIdentity.Scope, java.lang.Comparable<ServletHolder>
    Servlet Instance and Context Holder.

    Holds the name, params and some state of a javax.servlet.Servlet instance. It implements the ServletConfig interface. This class will organise the loading of the servlet when needed or requested.

    • Field Detail

      • APACHE_SENTINEL_CLASS

        public static final java.lang.String APACHE_SENTINEL_CLASS
        See Also:
        Constant Field Values
      • JSP_GENERATED_PACKAGE_NAME

        public static final java.lang.String JSP_GENERATED_PACKAGE_NAME
        See Also:
        Constant Field Values
      • NO_MAPPED_ROLES

        public static final java.util.Map<java.lang.String,​java.lang.String> NO_MAPPED_ROLES
    • Constructor Detail

      • ServletHolder

        public ServletHolder()
        Constructor .
      • ServletHolder

        public ServletHolder​(Source creator)
        Constructor .
        Parameters:
        creator - the holder source
      • ServletHolder

        public ServletHolder​(javax.servlet.Servlet servlet)
        Constructor for existing servlet.
        Parameters:
        servlet - the servlet
      • ServletHolder

        public ServletHolder​(java.lang.String name,
                             java.lang.Class<? extends javax.servlet.Servlet> servlet)
        Constructor for servlet class.
        Parameters:
        name - the name of the servlet
        servlet - the servlet class
      • ServletHolder

        public ServletHolder​(java.lang.String name,
                             javax.servlet.Servlet servlet)
        Constructor for servlet class.
        Parameters:
        name - the servlet name
        servlet - the servlet
      • ServletHolder

        public ServletHolder​(java.lang.Class<? extends javax.servlet.Servlet> servlet)
        Constructor for servlet class.
        Parameters:
        servlet - the servlet class
    • Method Detail

      • getUnavailableException

        public javax.servlet.UnavailableException getUnavailableException()
        Returns:
        The unavailable exception or null if not unavailable
      • setServlet

        public void setServlet​(javax.servlet.Servlet servlet)
      • getInitOrder

        @ManagedAttribute(value="initialization order",
                          readonly=true)
        public int getInitOrder()
      • setInitOrder

        public void setInitOrder​(int order)
        Set the initialize order.

        Holders with order<0, are initialized on use. Those with order>=0 are initialized in increasing order when the handler is started.

        Parameters:
        order - the servlet init order
      • compareTo

        public int compareTo​(ServletHolder sh)
        Comparator by init order.
        Specified by:
        compareTo in interface java.lang.Comparable<ServletHolder>
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • setUserRoleLink

        public void setUserRoleLink​(java.lang.String name,
                                    java.lang.String link)
        Link a user role. Translate the role name used by a servlet, to the link name used by the container.
        Parameters:
        name - The role name as used by the servlet
        link - The role name as used by the container.
      • getUserRoleLink

        public java.lang.String getUserRoleLink​(java.lang.String name)
        get a user role link.
        Parameters:
        name - The name of the role
        Returns:
        The name as translated by the link. If no link exists, the name is returned.
      • getForcedPath

        @ManagedAttribute(value="forced servlet path",
                          readonly=true)
        public java.lang.String getForcedPath()
        Returns:
        Returns the forcedPath.
      • setForcedPath

        public void setForcedPath​(java.lang.String forcedPath)
        Parameters:
        forcedPath - The forcedPath to set.
      • isEnabled

        public boolean isEnabled()
      • setEnabled

        public void setEnabled​(boolean enabled)
      • doStart

        public void doStart()
                     throws java.lang.Exception
        Overrides:
        doStart in class BaseHolder<javax.servlet.Servlet>
        Throws:
        java.lang.Exception
      • initialize

        public void initialize()
                        throws java.lang.Exception
        Description copied from class: BaseHolder
        Do any setup necessary after starting
        Overrides:
        initialize in class BaseHolder<javax.servlet.Servlet>
        Throws:
        java.lang.Exception - if unable to initialize
      • doStop

        public void doStop()
                    throws java.lang.Exception
        Overrides:
        doStop in class BaseHolder<javax.servlet.Servlet>
        Throws:
        java.lang.Exception
      • destroyInstance

        public void destroyInstance​(java.lang.Object o)
                             throws java.lang.Exception
        Overrides:
        destroyInstance in class Holder<javax.servlet.Servlet>
        Throws:
        java.lang.Exception
      • getServlet

        public javax.servlet.Servlet getServlet()
                                         throws javax.servlet.ServletException
        Get the servlet.
        Returns:
        The servlet
        Throws:
        javax.servlet.ServletException - if unable to init the servlet on first use
      • getServletInstance

        public javax.servlet.Servlet getServletInstance()
        Get the servlet instance (no initialization done).
        Returns:
        The servlet or null
      • checkServletType

        public void checkServletType()
                              throws javax.servlet.UnavailableException
        Check to ensure class of servlet is acceptable.
        Throws:
        javax.servlet.UnavailableException - if Servlet class is not of type Servlet
      • isAvailable

        public boolean isAvailable()
        Returns:
        true if the holder is started and is not unavailable
      • initJspServlet

        protected void initJspServlet()
                               throws java.lang.Exception
        Throws:
        java.lang.Exception - if unable to init the JSP Servlet
      • initMultiPart

        protected void initMultiPart()
                              throws java.lang.Exception
        Register a ServletRequestListener that will ensure tmp multipart files are deleted when the request goes out of scope.
        Throws:
        java.lang.Exception - if unable to init the multipart
      • getContextHandler

        public org.eclipse.jetty.server.handler.ContextHandler getContextHandler()
        Specified by:
        getContextHandler in interface org.eclipse.jetty.server.UserIdentity.Scope
      • getContextPath

        public java.lang.String getContextPath()
        Specified by:
        getContextPath in interface org.eclipse.jetty.server.UserIdentity.Scope
        See Also:
        UserIdentity.Scope.getContextPath()
      • getRoleRefMap

        public java.util.Map<java.lang.String,​java.lang.String> getRoleRefMap()
        Specified by:
        getRoleRefMap in interface org.eclipse.jetty.server.UserIdentity.Scope
        See Also:
        UserIdentity.Scope.getRoleRefMap()
      • getRunAsRole

        @ManagedAttribute(value="role to run servlet as",
                          readonly=true)
        public java.lang.String getRunAsRole()
      • setRunAsRole

        public void setRunAsRole​(java.lang.String role)
      • prepare

        protected void prepare​(org.eclipse.jetty.server.Request baseRequest,
                               javax.servlet.ServletRequest request,
                               javax.servlet.ServletResponse response)
                        throws javax.servlet.ServletException,
                               javax.servlet.UnavailableException
        Prepare to service a request.
        Parameters:
        baseRequest - the base request
        request - the request
        response - the response
        Throws:
        javax.servlet.ServletException - if unable to prepare the servlet
        javax.servlet.UnavailableException - if not available
      • ensureInstance

        @Deprecated
        public javax.servlet.Servlet ensureInstance()
                                             throws javax.servlet.ServletException,
                                                    javax.servlet.UnavailableException
        Deprecated.
        Throws:
        javax.servlet.ServletException
        javax.servlet.UnavailableException
      • handle

        public void handle​(org.eclipse.jetty.server.Request baseRequest,
                           javax.servlet.ServletRequest request,
                           javax.servlet.ServletResponse response)
                    throws javax.servlet.ServletException,
                           javax.servlet.UnavailableException,
                           java.io.IOException
        Service a request with this servlet.
        Parameters:
        baseRequest - the base request
        request - the request
        response - the response
        Throws:
        javax.servlet.ServletException - if unable to process the servlet
        javax.servlet.UnavailableException - if servlet is unavailable
        java.io.IOException - if unable to process the request or response
      • isJspServlet

        protected boolean isJspServlet()
      • isJspServlet

        protected boolean isJspServlet​(java.lang.String classname)
      • getNameOfJspClass

        public java.lang.String getNameOfJspClass​(java.lang.String jsp)
        Parameters:
        jsp - the jsp-file
        Returns:
        the simple classname of the jsp
      • getPackageOfJspClass

        public java.lang.String getPackageOfJspClass​(java.lang.String jsp)
      • getJspPackagePrefix

        public java.lang.String getJspPackagePrefix()
        Returns:
        the package for all jsps
      • getClassNameForJsp

        public java.lang.String getClassNameForJsp​(java.lang.String jsp)
        Parameters:
        jsp - the jsp-file from web.xml
        Returns:
        the fully qualified classname
      • appendPath

        protected void appendPath​(java.lang.StringBuffer path,
                                  java.lang.String element)
        Concatenate an element on to fully qualified classname.
        Parameters:
        path - the path under construction
        element - the element of the name to add
      • getRegistration

        public javax.servlet.ServletRegistration.Dynamic getRegistration()
      • newInstance

        protected javax.servlet.Servlet newInstance()
                                             throws javax.servlet.ServletException,
                                                    java.lang.IllegalAccessException,
                                                    java.lang.InstantiationException,
                                                    java.lang.NoSuchMethodException,
                                                    java.lang.reflect.InvocationTargetException
        Returns:
        the newly created Servlet instance
        Throws:
        javax.servlet.ServletException - if unable to create a new instance
        java.lang.IllegalAccessException - if not allowed to create a new instance
        java.lang.InstantiationException - if creating new instance resulted in error
        java.lang.NoSuchMethodException - if creating new instance resulted in error
        java.lang.reflect.InvocationTargetException - If creating new instance throws an exception
      • 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 BaseHolder<javax.servlet.Servlet>
        Throws:
        java.io.IOException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Holder<javax.servlet.Servlet>