Class HostManagerServlet

  • All Implemented Interfaces:
    Servlet, ServletConfig, Serializable, ContainerServlet
    Direct Known Subclasses:
    HTMLHostManagerServlet

    public class HostManagerServlet
    extends HttpServlet
    implements ContainerServlet
    Servlet that enables remote management of the virtual hosts installed on the server. Normally, this functionality will be protected by a security constraint in the web application deployment descriptor. However, this requirement can be relaxed during testing.

    This servlet examines the value returned by getPathInfo() and related query parameters to determine what action is being requested. The following actions and parameters (starting after the servlet path) are supported:

    • /add?name={host-name}&aliases={host-aliases}&manager={manager} - Create and add a new virtual host. The host-name attribute indicates the name of the new host. The host-aliases attribute is a comma separated list of the host alias names. The manager attribute is a boolean value indicating if the webapp manager will be installed in the newly created host (optional, false by default).
    • /remove?name={host-name} - Remove a virtual host. The host-name attribute indicates the name of the host.
    • /list - List the virtual hosts installed on the server. Each host will be listed with the following format host-name#host-aliases.
    • /start?name={host-name} - Start the virtual host.
    • /stop?name={host-name} - Stop the virtual host.

    NOTE - Attempting to stop or remove the host containing this servlet itself will not succeed. Therefore, this servlet should generally be deployed in a separate virtual host.

    The following servlet initialization parameters are recognized:

    • debug - The debugging detail level that controls the amount of information that is logged by this servlet. Default is zero.
    Author:
    Craig R. McClanahan, Remy Maucherat
    See Also:
    Serialized Form
    • Field Detail

      • context

        protected transient Context context
        The Context container associated with our web application.
      • debug

        protected int debug
        The debugging detail level for this servlet.
      • installedHost

        protected transient Host installedHost
        The associated host.
      • engine

        protected transient Engine engine
        The associated engine.
      • sm

        protected static final StringManager sm
        The string manager for this package.
      • wrapper

        protected transient Wrapper wrapper
        The Wrapper container associated with this servlet.
    • Constructor Detail

      • HostManagerServlet

        public HostManagerServlet()
    • Method Detail

      • getWrapper

        public Wrapper getWrapper()
        Return the Wrapper with which we are associated.
        Specified by:
        getWrapper in interface ContainerServlet
        Returns:
        The Wrapper with which this Servlet is associated.
      • setWrapper

        public void setWrapper​(Wrapper wrapper)
        Set the Wrapper with which we are associated.
        Specified by:
        setWrapper in interface ContainerServlet
        Parameters:
        wrapper - The new wrapper
      • add

        protected void add​(HttpServletRequest request,
                           PrintWriter writer,
                           String name,
                           boolean htmlMode,
                           StringManager smClient)
        Add host with the given parameters.
        Parameters:
        request - The request
        writer - The output writer
        name - The host name
        htmlMode - Flag value
        smClient - StringManager for the client's locale
      • booleanParameter

        protected boolean booleanParameter​(HttpServletRequest request,
                                           String parameter,
                                           boolean theDefault,
                                           boolean htmlMode)
        Extract boolean value from checkbox with default.
        Parameters:
        request - The Servlet request
        parameter - The parameter name
        theDefault - Default value
        htmlMode - Flag value
        Returns:
        the boolean value for the parameter
      • add

        protected void add​(PrintWriter writer,
                           String name,
                           String aliases,
                           String appBase,
                           boolean manager,
                           boolean autoDeploy,
                           boolean deployOnStartup,
                           boolean deployXML,
                           boolean unpackWARs,
                           boolean copyXML,
                           StringManager smClient)
        Add a host using the specified parameters.
        Parameters:
        writer - Writer to render results to
        name - host name
        aliases - comma separated alias list
        appBase - application base for the host
        manager - should the manager webapp be deployed to the new host ?
        autoDeploy - Flag value
        deployOnStartup - Flag value
        deployXML - Flag value
        unpackWARs - Flag value
        copyXML - Flag value
        smClient - StringManager for the client's locale
      • remove

        protected void remove​(PrintWriter writer,
                              String name,
                              StringManager smClient)
        Remove the specified host.
        Parameters:
        writer - Writer to render results to
        name - host name
        smClient - StringManager for the client's locale
      • list

        protected void list​(PrintWriter writer,
                            StringManager smClient)
        Render a list of the currently active Contexts in our virtual host.
        Parameters:
        writer - Writer to render to
        smClient - StringManager for the client's locale
      • start

        protected void start​(PrintWriter writer,
                             String name,
                             StringManager smClient)
        Start the host with the specified name.
        Parameters:
        writer - Writer to render to
        name - Host name
        smClient - StringManager for the client's locale
      • stop

        protected void stop​(PrintWriter writer,
                            String name,
                            StringManager smClient)
        Stop the host with the specified name.
        Parameters:
        writer - Writer to render to
        name - Host name
        smClient - StringManager for the client's locale
      • persist

        protected void persist​(PrintWriter writer,
                               StringManager smClient)
        Persist the current configuration to server.xml.
        Parameters:
        writer - Writer to render to
        smClient - i18n resources localized for the client
      • getConfigBase

        protected File getConfigBase​(String hostName)
        Get config base.
        Parameters:
        hostName - The host name
        Returns:
        the config base for the host