blob: 6b508378b2845d827b82e0f6e86d3e42fc867a36 [file] [log] [blame]
Hongqing Liufd5ee812014-05-10 16:32:51 +08001<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.39) - Administrative Apps - Overall Requirements</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">
2 .noPrint {display: none;}
3 td#mainBody {width: 100%;}
4 </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
5 Catalina Functional Specifications
6 " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.39, Jan 27 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Administrative Apps - Overall Requirements</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
7<ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li><li><a href="#External_Technologies">External Technologies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Properties_of_Administered_Objects">Properties of Administered Objects</a></li><li><a href="#Supported_Administrative_Operations">Supported Administrative Operations</a></li><li><a href="#Access_Method_Specific_Requirements">Access Method Specific Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>
8</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
9
10
11 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
12
13 <p>The purpose of this specification is to define high level requirements
14 for administrative applications that can be used to manage the operation
15 of a running Tomcat 6 container. A variety of <em>Access Methods</em>
16 to the supported administrative functionality shall be supported, to
17 meet varying requirements:</p>
18 <ul>
19 <li><em>As A Scriptable Web Application</em> - The existing
20 <code>Manager</code> web application provides a simple HTTP-based
21 interface for managing Tomcat through commands that are expressed
22 entirely through a request URI. This is useful in environments
23 where you wish to script administrative commands with tools that
24 can generate HTTP transactions.</li>
25 <li><em>As An HTML-Based Web Application</em> - Use an HTML presentation
26 to provide a GUI-like user interface for humans to interact with the
27 administrative capabilities.</li>
28 <li><em>As SOAP-Based Web Services</em> - The operational commands to
29 administer Tomcat are made available as web services that utilize
30 SOAP message formats.</li>
31 <li><em>As Java Management Extensions (JMX) Commands</em> - The operational
32 commands to administer Tomcat are made available through JMX APIs,
33 for integration into management consoles that utilize them.</li>
34 <li><em>Other Remote Access APIs</em> - Other remote access APIs, such
35 as JINI, RMI, and CORBA can also be utilized to access administrative
36 capabilities.</li>
37 </ul>
38
39 <p>Underlying all of the access methods described above, it is assumed
40 that the actual operations are performed either directly on the
41 corresponding Catalina components (such as calling the
42 <code>Deployer.deploy()</code> method to deploy a new web application),
43 or through a "business logic" layer that can be shared across all of the
44 access methods. This approach minimizes the cost of adding new
45 administrative capabilities later -- it is only necessary to add the
46 corresponding business logic function, and then write adapters to it for
47 all desired access methods.</p>
48
49 <p>The current status of this functional specification is
50 <strong>PROPOSED</strong>. It has not yet been discussed and
51 agreed to on the TOMCAT-DEV mailing list.</p>
52
53 </blockquote></td></tr></table>
54
55
56 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>
57
58 <p>The implementation of this functionality depends on the following
59 external specifications:</p>
60 <ul>
61 <li><a href="http://java.sun.com/products/jdk/idl/index.html">Java
62 IDL</a> (for CORBA, included in the JDK)</li>
63 <li><a href="http://java.sun.com/products/JavaManagement/index.html">
64 Java Management Extensions</a></li>
65 <li><a href="http://java.sun.com/products/rmi/index.html">Remote
66 Method Invocation</a> (Included in the JDK)</li>
67 </ul>
68
69 </blockquote></td></tr></table>
70
71
72 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>
73
74 <p>The implementation of this functionality shall conform to the
75 following requirements:</p>
76 <ul>
77 <li>To the maximum extent feasible, all administrative functions,
78 and the access methods that support them, shall run portably
79 on all platforms where Tomcat 6 itself runs.</li>
80 <li>In a default Tomcat distribution, all administrative capabilities
81 shall be disabled. It shall be necessary for a system
82 administrator to specifically enable the desired access methods
83 (such as by adding a username/password with a specific role to
84 the Tomcat user's database.</li>
85 <li>Administrative functions shall be realized as direct calls to
86 corresponding Catalina APIs, or through a business logic layer
87 that is independent of the access method used to initiate it.</li>
88 <li>The common business logic components shall be implemented in
89 package <code>org.apache.catalina.admin</code>.</li>
90 <li>The common business logic components shall be built as part of the
91 standard Catalina build process, and made visible in the
92 Catalina class loader.</li>
93 <li>The Java components required for each access method shall be
94 implemented in subpackages of <code>org.apache.catalina.admin</code>.
95 </li>
96 <li>The build scripts should treat each access method as optional,
97 so that it will be built only if the corresponding required
98 APIs are present at build time.</li>
99 <li>It shall be possible to save the configured state of the running
100 Tomcat container such that this state can be reproduced when the
101 container is shut down and restarted.</li>
102 <li>Administrative commands to start up and shut down the overall
103 Tomcat container are <strong>out of scope</strong> for the
104 purposes of these applications. It is assumed that other
105 (usually platform-specific) mechanisms will be used for container
106 startup and shutdown.</li>
107 </ul>
108
109 </blockquote></td></tr></table>
110
111
112</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>
113
114
115 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>
116
117 <p>The following environmental dependencies must be met in order for
118 administrative applications to operate correctly:</p>
119 <ul>
120 <li>For access methods that require creation of server sockets, the
121 appropriate ports must be configured and available.</li>
122 </ul>
123
124 </blockquote></td></tr></table>
125
126
127 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>
128
129 <p>Correct operation of administrative applications depends on the
130 following specific features of the surrounding container:</p>
131 <ul>
132 <li>To the maximum extent feasible, Catalina components that offer
133 direct administrative APIs and property setters shall support
134 "live" changes to their operation, without requiring a container
135 restart.</li>
136 </ul>
137
138 </blockquote></td></tr></table>
139
140
141 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Technologies"><!--()--></a><a name="External_Technologies"><strong>External Technologies</strong></a></font></td></tr><tr><td><blockquote>
142
143 <p>The availability of the following technologies can be assumed
144 for the implementation and operation of the various access methods
145 and the corresponding administrative business logic:</p>
146 <ul>
147 <li><a href="http://java.sun.com/j2se/">Java 2 Standard Edition</a>
148 (Version 1.2 or later)</li>
149 <li><a href="http://www.jcp.org/jsr/detail/154.jsp">Servlet 2.4</a>
150 (supported natively by Tomcat 6)</li>
151 <li><a href="http://www.jcp.org/jsr/detail/152.jsp">JavaServer Pages 2.0</a>
152 (supported natively by Tomcat 6)</li>
153 <li><a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">JavaServer Pages Standard Tag Library 1.0 (Jakarta Taglibs-Standard 1.0.3)</a></li>
154 <li><a href="http://struts.apache.org/">Struts Framework</a>
155 (Version 1.0) - MVC Framework for Web Applications</li>
156 <li><strong>TO BE DETERMINED</strong> - Application for hosting SOAP
157 based web services</li>
158 </ul>
159
160 </blockquote></td></tr></table>
161
162
163</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>
164
165
166 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Properties of Administered Objects"><!--()--></a><a name="Properties_of_Administered_Objects"><strong>Properties of Administered Objects</strong></a></font></td></tr><tr><td><blockquote>
167
168 <p>Functional requirements for administrative applications are specified
169 in terms of <em>Administered Objects</em>, whose definitions and detailed
170 properties are listed <a href="fs-admin-objects.html">here</a>. In general,
171 Administered Objects correspond to components in the Catalina architecture,
172 but these objects are defined separately here for the following reasons:</p>
173 <ul>
174 <li>It is possible that the administrative applications do not expose
175 every possible configurable facet of the underlying components.</li>
176 <li>In some cases, an Administered Object (from the perspective of an
177 administrative operation) is realized by more than one Catalina
178 component, at a finer-grained level of detail.</li>
179 <li>It is necessary to represent the configuration information for a
180 component separately from the component itself (for instance, in
181 order to store that configuration information for later use).</li>
182 <li>It is necessary to represent configuration information (such as
183 a Default Context) when there is no corresponding component instance.
184 </li>
185 <li>Administered Objects, when realized as Java classes, will include
186 methods for administrative operations that have no correspondence
187 to operations performed by the corresponding actual components.</li>
188 </ul>
189
190 <p>It is assumed that the reader is familiar with the overall component
191 architecture of Catalina. For further information, see the corresponding
192 Developer Documentation. To distinguish names that are used as both
193 <em>Administered Objects</em> and <code>Components</code>, different
194 font presentations are utilized. Default values for many properties
195 are listed in [square brackets].</p>
196
197 </blockquote></td></tr></table>
198
199
200 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Administrative Operations"><!--()--></a><a name="Supported_Administrative_Operations"><strong>Supported Administrative Operations</strong></a></font></td></tr><tr><td><blockquote>
201
202 <p>The administrative operations that are available are described in terms
203 of the corresponding Administered Objects (as defined above), in a manner
204 that is independent of the access method by which these operations are
205 requested. In general, such operations are relevant only in the context
206 of a particular Administered Object (and will most likely be realized as
207 method calls on the corresponding Administered Object classes), so they
208 are organized based on the currently "focused" administered object.
209 The available Supported Operations are documented
210 <a href="fs-admin-opers.html">here</a>.</p>
211
212 </blockquote></td></tr></table>
213
214
215 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Method Specific Requirements"><!--()--></a><a name="Access_Method_Specific_Requirements"><strong>Access Method Specific Requirements</strong></a></font></td></tr><tr><td><blockquote>
216
217 <h5>Scriptable Web Application</h5>
218
219 <p>An appropriate subset of the administrative operations described above
220 shall be implemented as commands that can be performed by the "Manager"
221 web application. <strong>FIXME</strong> - Enumerate them.</p>
222
223 <p>In addition, this web application shall conform to the following
224 requirements:</p>
225 <ul>
226 <li>All request URIs shall be protected by a security constraint that
227 requires security role <code>manager</code> for processing.</li>
228 <li>The default user database shall <strong>not</strong> contain any
229 user that has been assigned the role <code>manager</code>.</li>
230 </ul>
231
232 <h5>HTML-Based Web Application</h5>
233
234 <p>The entire suite of administrative operations described above shall be
235 made available through a web application designed for human interaction.
236 In addition, this web application shall conform to the following
237 requirements:</p>
238 <ul>
239 <li>Must be implemented using servlet, JSP, and MVC framework technologies
240 described under "External Technologies", above.</li>
241 <li>Prompts and error messages must be internationalizable to multiple
242 languages.</li>
243 <li>Rendered HTML must be compatible with Netscape Navigator (version 4.7
244 or later) and Internet Explorer (version 5.0 or later).</li>
245 </ul>
246
247 </blockquote></td></tr></table>
248
249
250</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>
251
252 <p><strong>FIXME</strong> - Complete this section.</p>
253
254</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
255 Copyright &copy; 1999-2014, Apache Software Foundation
256 </em></font></div></td></tr></table></body></html>