Class ServletHolder

java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.servlet.BaseHolder<javax.servlet.Servlet>
org.eclipse.jetty.servlet.Holder<javax.servlet.Servlet>
org.eclipse.jetty.servlet.ServletHolder
All Implemented Interfaces:
Comparable<ServletHolder>, UserIdentity.Scope, Dumpable, LifeCycle

@ManagedObject("Servlet Holder") public class ServletHolder extends Holder<javax.servlet.Servlet> implements UserIdentity.Scope, 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 Details

    • LOG

      private static final Logger LOG
    • _initOrder

      private int _initOrder
    • _initOnStartup

      private boolean _initOnStartup
    • _roleMap

      private Map<String,String> _roleMap
    • _forcedPath

      private String _forcedPath
    • _runAsRole

      private String _runAsRole
    • _registration

      private javax.servlet.ServletRegistration.Dynamic _registration
    • _jspContainer

      private ServletHolder.JspContainer _jspContainer
    • _servlet

      private volatile javax.servlet.Servlet _servlet
    • _config

      private ServletHolder.Config _config
    • _enabled

      private boolean _enabled
    • APACHE_SENTINEL_CLASS

      public static final String APACHE_SENTINEL_CLASS
      See Also:
    • JSP_GENERATED_PACKAGE_NAME

      public static final String JSP_GENERATED_PACKAGE_NAME
      See Also:
  • Constructor Details

    • 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(String name, Class<? extends javax.servlet.Servlet> servlet)
      Constructor for servlet class.
      Parameters:
      name - the name of the servlet
      servlet - the servlet class
    • ServletHolder

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

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

    • 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 Comparable<ServletHolder>
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

      public void setUserRoleLink(String name, 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 String getUserRoleLink(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 String getForcedPath()
      Returns:
      Returns the forcedPath.
    • setForcedPath

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

      public boolean isEnabled()
    • setEnabled

      public void setEnabled(boolean enabled)
    • doStart

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

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

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

      public void destroyInstance(Object o)
      Overrides:
      destroyInstance in class Holder<javax.servlet.Servlet>
    • predestroyServlet

      private void predestroyServlet(javax.servlet.Servlet servlet)
    • 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
    • checkInitOnStartup

      private void checkInitOnStartup()
      Check if there is a javax.servlet.annotation.ServletSecurity annotation on the servlet class. If there is, then we force it to be loaded on startup, because all of the security constraints must be calculated as the container starts.
    • makeUnavailable

      private javax.servlet.Servlet makeUnavailable(javax.servlet.UnavailableException e)
    • makeUnavailable

      private void makeUnavailable(Throwable e)
    • initServlet

      private void initServlet() throws javax.servlet.ServletException
      Throws:
      javax.servlet.ServletException
    • initJspServlet

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

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

      public ContextHandler getContextHandler()
      Specified by:
      getContextHandler in interface UserIdentity.Scope
      Returns:
      The context handler that the identity is being considered within
    • getContextPath

      public String getContextPath()
      Specified by:
      getContextPath in interface UserIdentity.Scope
      Returns:
      The context path that the identity is being considered within
      See Also:
    • getRoleRefMap

      public Map<String,String> getRoleRefMap()
      Specified by:
      getRoleRefMap in interface UserIdentity.Scope
      Returns:
      A map of role reference names that converts from names used by application code to names used by the context deployment.
      See Also:
    • getRunAsRole

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

      public void setRunAsRole(String role)
    • prepare

      protected void prepare(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
      Deprecated.
      Throws:
      javax.servlet.ServletException
    • handle

      public void handle(Request baseRequest, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws javax.servlet.ServletException, javax.servlet.UnavailableException, 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
      IOException - if unable to process the request or response
    • isJspServlet

      protected boolean isJspServlet()
    • isJspServlet

      protected boolean isJspServlet(String classname)
    • detectJspContainer

      private void detectJspContainer()
    • getNameOfJspClass

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

      public String getPackageOfJspClass(String jsp)
    • getJspPackagePrefix

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

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

      protected void appendPath(StringBuffer path, 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, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException
      Returns:
      the newly created Servlet instance
      Throws:
      javax.servlet.ServletException - if unable to create a new instance
      IllegalAccessException - if not allowed to create a new instance
      InstantiationException - if creating new instance resulted in error
      NoSuchMethodException - if creating new instance resulted in error
      InvocationTargetException - If creating new instance throws an exception
    • dump

      public void dump(Appendable out, String indent) throws IOException
      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 BaseHolder<javax.servlet.Servlet>
      Parameters:
      out - The appendable to dump to
      indent - The indent to apply after any new lines.
      Throws:
      IOException - if unable to write to Appendable
    • toString

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