org.apache.catalina.servlets
Class ManagerServlet

java.lang.Object
  extended byjavax.servlet.GenericServlet
      extended byjavax.servlet.http.HttpServlet
          extended byorg.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:

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:

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:

Version:
$Revision: 466595 $ $Date: 2006-10-21 23:24:41 +0100 (Sat, 21 Oct 2006) $
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  java.io.File deployed
          File object representing the directory into which the deploy() command will store the WAR and context configuration files that have been uploaded.
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  javax.naming.Context global
          The global JNDI NamingContext for this server, if available.
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
protected  void deploy(java.io.PrintWriter writer, java.lang.String path, javax.servlet.http.HttpServletRequest request)
          Deploy a web application archive (included in the current request) at the specified context path.
 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.
 void doPut(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Process a PUT request for the specified resource.
protected  void extractXml(java.io.File war, java.io.File xml)
          Extract the context configuration file from the specified WAR, if it is present.
protected  java.lang.Object getLock()
          Obtain an object to lock on to prevent this servlet and the HostConfig thread both trying to deploy the same application.
 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 config, 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 printResources(java.io.PrintWriter writer, java.lang.String prefix, javax.naming.Context namingContext, java.lang.String type, java.lang.Class clazz)
          List the resources of the given context.
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 resources(java.io.PrintWriter writer, java.lang.String type)
          Render a list of available global JNDI resources.
protected  void roles(java.io.PrintWriter writer)
          Render a list of security role names (and corresponding descriptions) from the org.apache.catalina.UserDatabase resource that is connected to the users resource reference.
protected  void serverinfo(java.io.PrintWriter writer)
          Writes System OS and JVM properties.
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.
protected  void undeploy(java.io.PrintWriter writer, java.lang.String path)
          Undeploy the web application at the specified context path.
protected  void undeployDir(java.io.File dir)
          Delete the specified directory, including all of its contents and subdirectories recursively.
protected  void uploadWar(javax.servlet.http.HttpServletRequest request, java.io.File war)
          Upload the WAR file included in this request, and store it at the specified file location.
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPost, 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.


deployed

protected java.io.File deployed
File object representing the directory into which the deploy() command will store the WAR and context configuration files that have been uploaded.


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.


global

protected javax.naming.Context global
The global JNDI NamingContext for this server, if available.


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

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.

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

doPut

public void doPut(javax.servlet.http.HttpServletRequest request,
                  javax.servlet.http.HttpServletResponse response)
           throws java.io.IOException,
                  javax.servlet.ServletException
Process a PUT request for the specified resource.

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.

Throws:
javax.servlet.ServletException

deploy

protected void deploy(java.io.PrintWriter writer,
                      java.lang.String path,
                      javax.servlet.http.HttpServletRequest request)
Deploy a web application archive (included in the current request) at the specified context path.

Parameters:
writer - Writer to render results to
path - Context path of the application to be installed
request - Servlet request we are processing

install

protected void install(java.io.PrintWriter writer,
                       java.lang.String config,
                       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
config - URL of the context configuration file to be installed
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

resources

protected void resources(java.io.PrintWriter writer,
                         java.lang.String type)
Render a list of available global JNDI resources.

Parameters:
type - Fully qualified class name of the resource type of interest, or null to list resources of all types

printResources

protected void printResources(java.io.PrintWriter writer,
                              java.lang.String prefix,
                              javax.naming.Context namingContext,
                              java.lang.String type,
                              java.lang.Class clazz)
List the resources of the given context.


roles

protected void roles(java.io.PrintWriter writer)
Render a list of security role names (and corresponding descriptions) from the org.apache.catalina.UserDatabase resource that is connected to the users resource reference. Typically, this will be the global user database, but can be adjusted if you have different user databases for different virtual hosts.

Parameters:
writer - Writer to render to

serverinfo

protected void serverinfo(java.io.PrintWriter writer)
Writes System OS and JVM properties.

Parameters:
writer - Writer to render to

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

undeploy

protected void undeploy(java.io.PrintWriter writer,
                        java.lang.String path)
Undeploy the web application at the specified context path.

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

extractXml

protected void extractXml(java.io.File war,
                          java.io.File xml)
                   throws java.io.IOException
Extract the context configuration file from the specified WAR, if it is present. If it is not present, ensure that the corresponding file does not exist.

Parameters:
war - File object representing the WAR
xml - File object representing where to store the extracted context configuration file (if it exists)
Throws:
java.io.IOException - if an i/o error occurs

undeployDir

protected void undeployDir(java.io.File dir)
Delete the specified directory, including all of its contents and subdirectories recursively.

Parameters:
dir - File object representing the directory to be deleted

uploadWar

protected void uploadWar(javax.servlet.http.HttpServletRequest request,
                         java.io.File war)
                  throws java.io.IOException
Upload the WAR file included in this request, and store it at the specified file location.

Parameters:
request - The servlet request we are processing
war - The file into which we should store the uploaded WAR
Throws:
java.io.IOException - if an I/O error occurs during processing

getLock

protected java.lang.Object getLock()
Obtain an object to lock on to prevent this servlet and the HostConfig thread both trying to deploy the same application.

Returns:
An appropriate object to use for the lock


Copyright 2000-2002 Apache Software Foundation. All Rights Reserved.