org.apache.catalina.manager.host

## Class HostManagerServlet

- java.lang.Object
- - javax.servlet.GenericServlet
  - - javax.servlet.http.HttpServlet
    - - org.apache.catalina.manager.host.HostManagerServlet

- All Implemented Interfaces:
    Serializable, Servlet, ServletConfig, 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 Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Context` | `context` The Context container associated with our web application.
    `protected int` | `debug` The debugging detail level for this servlet.
    `protected Engine` | `engine` The associated engine.
    `protected Host` | `installedHost` The associated host.
    `protected static StringManager` | `sm` The string manager for this package.
    `protected Wrapper` | `wrapper` The Wrapper container associated with this servlet.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HostManagerServlet()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `add(HttpServletRequest request, PrintWriter writer, String name, boolean htmlMode, StringManager smClient)` Add host with the given parameters.
    `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.
    `protected boolean` | `booleanParameter(HttpServletRequest request, String parameter, boolean theDefault, boolean htmlMode)` Extract boolean value from checkbox with default.
    `void` | `destroy()` Finalize this servlet.
    `void` | `doGet(HttpServletRequest request, HttpServletResponse response)` Process a GET request for the specified resource.
    `protected File` | `getConfigBase(String hostName)` Get config base.
    `Wrapper` | `getWrapper()` Return the Wrapper with which we are associated.
    `void` | `init()` A convenience method which can be overridden so that there's no need to call `super.init(config)`.
    `protected void` | `list(PrintWriter writer, StringManager smClient)` Render a list of the currently active Contexts in our virtual host.
    `protected void` | `persist(PrintWriter writer, StringManager smClient)` Persist the current configuration to server.xml.
    `protected void` | `remove(PrintWriter writer, String name, StringManager smClient)` Remove the specified host.
    `void` | `setWrapper(Wrapper wrapper)` Set the Wrapper with which we are associated.
    `protected void` | `start(PrintWriter writer, String name, StringManager smClient)` Start the host with the specified name.
    `protected void` | `stop(PrintWriter writer, String name, StringManager smClient)` Stop the host with the specified name.

    - ### Methods inherited from class javax.servlet.http.HttpServlet

      `doDelete, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service, service`

    - ### Methods inherited from class javax.servlet.GenericServlet

      `getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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

    - #### destroy

          public void destroy()

      Finalize this servlet.
      Specified by:
        `destroy` in interface `Servlet`
      Overrides:
        `destroy` in class `GenericServlet`

    - #### doGet

          public void doGet(HttpServletRequest request,
                   HttpServletResponse response)
                     throws IOException,
                            ServletException

      Process a GET request for the specified resource.
      Overrides:
        `doGet` in class `HttpServlet`
      Parameters:
        `request` - The servlet request we are processing
        `response` - The servlet response we are creating
      Throws:
        `IOException` - if an input/output error occurs
        `ServletException` - if a servlet-specified error occurs
      See Also:
        `ServletResponse.setContentType(java.lang.String)`

    - #### 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

    - #### init

          public void init()
                    throws ServletException

      Description copied from class: `javax.servlet.GenericServlet`
      A convenience method which can be overridden so that there's no need to call `super.init(config)`.

      Instead of overriding `GenericServlet.init(ServletConfig)`, simply override this method and it will be called by `GenericServlet.init(ServletConfig config)`. The `ServletConfig` object can still be retrieved via `GenericServlet.getServletConfig()`.

      Overrides:
        `init` in class `GenericServlet`
      Throws:
        `ServletException` - if an exception occurs that interrupts the servlet's normal operation

    - #### 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

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.