## org.apache.catalina.servlets
Class ManagerServlet

    java.lang.Object
      |
      +--javax.servlet.GenericServlet
            |
            +--javax.servlet.http.HttpServlet
                  |
                  +--org.apache.catalina.servlets.ManagerServlet

All Implemented Interfaces:
  ContainerServlet, java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

Direct Known Subclasses:
  HTMLManagerServlet

public class ManagerServlet
extends javax.servlet.http.HttpServlet
implements ContainerServlet

Servlet that enables remote management of the web applications installed within the same virtual host as this web application is. 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:

- /install?path=/xxx&war={war-url} - Install and start a new web application attached to context path `/xxx`, based on the contents of the web application archive found at the specified URL.
- /list - List the context paths of all currently installed web applications for this virtual host. Each context will be listed with the following format `path:status:sessions`. Where path is the context path. Status is either running or stopped. Sessions is the number of active Sessions.
- /reload?path=/xxx - Reload the Java classes and resources for the application at the specified path, but do not reread the web.xml configuration files.
- /remove?path=/xxx - Shutdown and remove the web application attached to context path `/xxx` for this virtual host.
- /sessions?path=/xxx - List session information about the web application attached to context path `/xxx` for this virtual host.
- /start?path=/xxx - Start the web application attached to context path `/xxx` for this virtual host.
- /stop?path=/xxx - Stop the web application attached to context path `/xxx` for this virtual host.

Use `path=/` for the ROOT context.

The syntax of the URL for a web application archive must conform to one of the following patterns to be successfully deployed:

- file:/absolute/path/to/a/directory - You can specify the absolute path of a directory that contains the unpacked version of a web application. This directory will be attached to the context path you specify without any changes.
- jar:file:/absolute/path/to/a/warfile.war!/ - You can specify a URL to a local web application archive file. The syntax must conform to the rules specified by the `JarURLConnection` class for a reference to an entire JAR file.
- jar:http://hostname:port/path/to/a/warfile.war!/ - You can specify a URL to a remote (HTTP-accessible) web application archive file. The syntax must conform to the rules specified by the `JarURLConnection` class for a reference to an entire JAR file.

NOTE - Attempting to reload or remove the application containing this servlet itself will not succeed. Therefore, this servlet should generally be deployed as a separate web application within the virtual host to be managed.

NOTE - For security reasons, this application will not operate when accessed via the invoker servlet. You must explicitly map this servlet with a servlet mapping, and you will always want to protect it with appropriate security constraints as well.

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.

Version:
  $Revision: 1.9 $ $Date: 2001/09/15 23:31:30 $
Author:
  Craig R. McClanahan
See Also:
  Serialized Form

Field Summary
`protected Context` `context` The Context container associated with our web application.
`protected int` `debug` The debugging detail level for this servlet.
`protected Deployer` `deployer` The Deployer container that contains our own web application's Context, along with the associated Contexts for web applications that we are managing.
`protected static StringManager` `sm` The string manager for this package.
`protected Wrapper` `wrapper` The Wrapper container associated with this servlet.

Constructor Summary
`ManagerServlet()`

Method Summary
`void` `destroy()` Finalize this servlet.
`void` `doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Process a GET request for the specified resource.
`Wrapper` `getWrapper()` Return the Wrapper with which we are associated.
`void` `init()` Initialize this servlet.
`protected void` `install(java.io.PrintWriter writer, java.lang.String path, java.lang.String war)` Install an application for the specified path from the specified web application archive.
`protected void` `list(java.io.PrintWriter writer)` Render a list of the currently active Contexts in our virtual host.
`protected void` `reload(java.io.PrintWriter writer, java.lang.String path)` Reload the web application at the specified context path.
`protected void` `remove(java.io.PrintWriter writer, java.lang.String path)` Remove the web application at the specified context path.
`protected void` `sessions(java.io.PrintWriter writer, java.lang.String path)` Session information for the web application at the specified context path.
`void` `setWrapper(Wrapper wrapper)` Set the Wrapper with which we are associated.
`protected void` `start(java.io.PrintWriter writer, java.lang.String path)` Start the web application at the specified context path.
`protected void` `stop(java.io.PrintWriter writer, java.lang.String path)` Stop the web application at the specified context path.

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 Context context

  The Context container associated with our web application.

### debug

    protected int debug

  The debugging detail level for this servlet.

### deployer

    protected Deployer deployer

  The Deployer container that contains our own web application's Context, along with the associated Contexts for web applications that we are managing.

### sm

    protected static StringManager sm

  The string manager for this package.

### wrapper

    protected Wrapper wrapper

  The Wrapper container associated with this servlet.

Constructor Detail

### ManagerServlet

    public ManagerServlet()

Method Detail

### getWrapper

    public Wrapper getWrapper()

  Return the Wrapper with which we are associated.

  Specified by:
    `getWrapper` in interface `ContainerServlet`

### 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 `javax.servlet.Servlet`
  Overrides:
    `destroy` in class `javax.servlet.GenericServlet`

### doGet

    public void doGet(javax.servlet.http.HttpServletRequest request,
                      javax.servlet.http.HttpServletResponse response)
               throws java.io.IOException,
                      javax.servlet.ServletException

  Process a GET request for the specified resource.

  Overrides:
    `doGet` in class `javax.servlet.http.HttpServlet`
  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Throws:
    `java.io.IOException` - if an input/output error occurs
    `javax.servlet.ServletException` - if a servlet-specified error occurs

### init

    public void init()
              throws javax.servlet.ServletException

  Initialize this servlet.

  Overrides:
    `init` in class `javax.servlet.GenericServlet`
    `javax.servlet.ServletException`

### install

    protected void install(java.io.PrintWriter writer,
                           java.lang.String path,
                           java.lang.String war)

  Install an application for the specified path from the specified web application archive.

  Parameters:
    `writer` - Writer to render results to
    `path` - Context path of the application to be installed
    `war` - URL of the web application archive to be installed

### list

    protected void list(java.io.PrintWriter writer)

  Render a list of the currently active Contexts in our virtual host.

  Parameters:
    `writer` - Writer to render to

### reload

    protected void reload(java.io.PrintWriter writer,
                          java.lang.String path)

  Reload the web application at the specified context path.

  Parameters:
    `writer` - Writer to render to
    `path` - Context path of the application to be restarted

### remove

    protected void remove(java.io.PrintWriter writer,
                          java.lang.String path)

  Remove the web application at the specified context path.

  Parameters:
    `writer` - Writer to render to
    `path` - Context path of the application to be removed

### sessions

    protected void sessions(java.io.PrintWriter writer,
                            java.lang.String path)

  Session information for the web application at the specified context path. Displays a profile of session MaxInactiveInterval timeouts listing number of sessions for each 10 minute timeout interval up to 10 hours.

  Parameters:
    `writer` - Writer to render to
    `path` - Context path of the application to list session information for

### start

    protected void start(java.io.PrintWriter writer,
                         java.lang.String path)

  Start the web application at the specified context path.

  Parameters:
    `writer` - Writer to render to
    `path` - Context path of the application to be started

### stop

    protected void stop(java.io.PrintWriter writer,
                        java.lang.String path)

  Stop the web application at the specified context path.

  Parameters:
    `writer` - Writer to render to
    `path` - Context path of the application to be stopped

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