http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/5be16a28/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-jndi-realm.html ---------------------------------------------------------------------- diff --git a/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-jndi-realm.html b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-jndi-realm.html new file mode 100644 index 0000000..cf037f3 --- /dev/null +++ b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-jndi-realm.html @@ -0,0 +1,381 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications - JNDIRealm</title><meta content="Craig McClanahan" name="author"><style media="print" type="text/css"> + .noPrint {display: none;} + td#mainBody {width: 100%;} + </style></head><body vlink="#525D76" alink="#525D76" link="#525D76" text="#000000" bgcolor="#ffffff"><table cellspacing="0" width="100%" border="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img border="0" alt=" + Catalina Functional Specifications + " align="right" src="../images/tomcat.gif"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img border="0" alt="Apache Logo" align="right" src="../images/asf-logo.gif"></a></td></tr></table><table cellspacing="4" width="100%" border="0"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><tr><!--LEFT SIDE NAVIGATION--><td class="noPrint" nowrap valign="top" width="20%"><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 id="mainBody" align="left" valign="top" width="80%"><h1>Catalina Functional Specifications</h1><h2>JNDIRealm</h2><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote> +<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></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Operational_Modes">Operational Modes</a></li><li><a href="#Administrator_Login_Mode_Functionality">Administrator Login Mode Functionality</a></li><li><a href="#Username_Login_Mode_Functionality">Username Login Mode Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul> +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote> + + <p>The purpose of the <strong>JNDIRealm</strong> implementation is to + provide a mechanism by which Tomcat 6 can acquire information needed + to authenticate web application users, and define their security roles, + from a directory server or other service accessed via JNDI APIs. For + integration with Catalina, this class must implement the + <code>org.apache.catalina.Realm</code> interface.</p> + + <p>This specification reflects a combination of functionality that is + already present in the <code>org.apache.catalina.realm.JNDIRealm</code> + class, as well as requirements for enhancements that have been + discussed. Where appropriate, requirements statements are marked + <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p> + + <p>The current status of this functional specification is + <strong>PROPOSED</strong>. It has not yet been discussed and + agreed to on the TOMCAT-DEV mailing list.</p> + + <p>The code in the current version of <code>JNDIRealm</code>, and the + ideas expressed in this functional specification, are the results of + contributions from many individuals, including (alphabetically):</p> + <ul> + <li>Holman, John <[email protected]></li> + <li>Lockhart, Ellen <[email protected]></li> + <li>McClanahan, Craig <[email protected]></li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote> + + <p>The implementation of this functionality depends on the following + external specifications:</p> + <ul> + <li><a href="http://java.sun.com/products/jndi/">Java Naming and + Directory Interface</a> (version 1.2.1 or later)</li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote> + + <p>The implementation of this functionality shall conform to the + following requirements:</p> + <ul> + <li>Be realized in one or more implementation classes.</li> + <li>Implement the <code>org.apache.catalina.Realm</code> interface. + [Current]</li> + <li>Implement the <code>org.apache.catalina.Lifecycle</code> + interface. [Current]</li> + <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code> + base class.</li> + <li>Live in the <code>org.apache.catalina.realm</code> package. + [Current]</li> + <li>Support a configurable debugging detail level. [Current]</li> + <li>Log debugging and operational messages (suitably internationalized) + via the <code>getContainer().log()</code> method. [Current]</li> + </ul> + + </blockquote></td></tr></table> + + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + <p>The following environmental dependencies must be met in order for + JNDIRealm to operate correctly:</p> + <ul> + <li>The desire to utilize JNDIRealm must be registered in + <code>$CATALINA_BASE/conf/server.xml</code>, in a + <code><Realm></code> element that is nested inside a + corresponding <code><Engine></code>, <code><Host></code>, + or <code><Context></code> element.</li> + <li>If the <em>Administrator Login</em> operational mode is selected, + the configured administrator username and password must be configured + in the corresponding directory server.</li> + <li>If the <em>Username Login</em> operational mode is selected, + the corresponding directory server must be configured to accept + logins with the username and password that will be passed to + <code>JNDIRealm</code> by the appropriate <code>Authenticator</code>. + </li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + <p>Correct operation of JNDIRealm depends on the following + specific features of the surrounding container:</p> + <ul> + <li>Interactions with <code>JNDIRealm</code> will be initiated by + the appropriate <code>Authenticator</code> implementation, based + on the login method that is selected.</li> + <li><code>JNDIRealm</code> must have the JNDI API classes available + to it. For a JDK 1.2 container, that means <code>jndi.jar</code> + and the appropriate implementation (such as <code>ldap.jar</code>) + must be placed in the <code>server/lib</code> directory.</li> + </ul> + + </blockquote></td></tr></table> + + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Operational Modes"><!--()--></a><a name="Operational_Modes"><strong>Operational Modes</strong></a></font></td></tr><tr><td><blockquote> + + <p>The completed <code>JNDIRealm</code> must support two major operational + modes in order to support all of the required use cases. For the purposes + of this document, the modes are called <em>administrator login</em> and + <em>Username Login</em>. They are described further in the following + paragraphs.</p> + + <p>For <em>Administrator Login</em> mode, <code>JNDIRealm</code> will be + configured to establish one or more connections (using a connection pool) + to an appropriate directory server, using JNDI APIs, under a "system + administrator" username and password. This is similar to the approach + normally used to configure <code>JDBCRealm</code> to access authentication + and access control information in a database. It is assumed that the + system administrator username and password that are configured provide + sufficient privileges within the directory server to read (but not modify) + the username, password, and assigned roles for each valid user of the + web application associated with this <code>Realm</code>. The password + can be stored in cleartext, or in one of the digested modes supported by + the <code>org.apache.catalina.realm.RealmBase</code> base class.</p> + + <p>For <em>Username Login</em> mode, <code>JNDIRealm</code> does not + normally remain connected to the directory server. Instead, whenever a + user is to be authenticated, a connection to the directory server + (using the username and password received from the authenticator) is + attempted. If this connection is successful, the user is assumed to be + successfully authenticated. This connection is then utilized to read + the corresponding security roles associated with this user, and the + connection is then broken.</p> + + <p><strong>NOTE</strong> - <em>Username Login</em> mode cannot be used + if you have selected login method <code>DIGEST</code> in your web + application deployment descriptor (<code>web.xml</code>) file. This + restriction exists because the cleartext password is never available + to the container, so it is not possible to bind to the directory server + using the user's username and password.</p> + + <p>Because these operational modes work so differently, the functionality + for each mode will be described separately. Whether or not both modes + are actually supported by a single class (versus a class per mode) is + an implementation detail left to the designer.</p> + + <p><strong>NOTE</strong> - The current implementation only implements + part of the <em>Administrator Lookup</em> mode requirements. It does + not support the <em>Username Lookup</em> mode at all, at this point.</p> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Administrator Login Mode Functionality"><!--()--></a><a name="Administrator_Login_Mode_Functionality"><strong>Administrator Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote> + + + <h3>Configurable Properties</h3> + + <p>The implementation shall support the following properties + that can be configured with JavaBeans property setters:</p> + <ul> + <li><code>connectionURL</code> - URL of the directory server we will + be contacting.</li> + <li><code>contextFactory</code> - Fully qualified class name of the JNDI + context factory used to retrieve our InitialContext. + [com.sun.jndi.ldap.LdapCtxFactory]</li> + <li>Additional configuration properties required to establish the + appropriate connection. [Requested]</li> + <li>Connection pool configuration properties. [Requested]</li> + <li>Configuration properties defining how a particular user is + authenticated. The following capabilities should be supported: + <ul> + <li>Substitute the specified username into a string. [Requested]</li> + <li>Retrieve the distinguished name (DN) of an authorized user via an + LDAP search string with a replacement placeholder for the + username, and comparison of the password to a configurable + attribute retrieved from the search result. [Current]</li> + </ul></li> + <li>Configuration properties defining how the roles associated with a + particular authenticated user can be retrieved. The following + approaches should be supported: + <ul> + <li>Retrieve a specified attribute (possibly multi-valued) + from an LDAP search expression, + with a replacement placeholder for the DN of the user. + [Current]</li> + <li>Retrieve a set of role names that are defined implicitly (by + selecting principals that match a search pattern) rather than + explicitly (by finding a particular attribute value). + [Requested]</li> + </ul></li> + </ul> + + <h3>Lifecycle Functionality</h3> + + <p>The following processing must be performed when the <code>start()</code> + method is called:</p> + <ul> + <li>Establish a connection to the configured directory server, using the + configured system administrator username and password. [Current]</li> + <li>Configure and establish a connection pool of connections to the + directory server. [Requested]</li> + </ul> + + <p>The following processing must be performed when the <code>stop()</code> + method is called:</p> + <ul> + <li>Close any opened connections to the directory server.</li> + </ul> + + + <h3>Method authenticate() Functionality</h3> + + <p>When <code>authenticate()</code> is called, the following processing + is required:</p> + <ul> + <li>Acquire the one and only connection [Current] or acquire a connection + from the connection pool [Requested].</li> + <li>Authenticate the user by retrieving the user's Distinguished Name, + based on the specified username and password.</li> + <li>If the user was not authenticated, release the allocated connection + and return <code>null</code>.</li> + <li>Acquire a <code>List</code> of the security roles assigned to the + authenticated user.</li> + <li>Construct a new instance of class + <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as + constructor arguments: this realm instance, the authenticated + username, and a <code>List</code> of the security roles associated + with this user.</li> + <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous + <code>GenericPrincipal</code> objects for a particular user, because + the information in the directory server might have changed since the + last time this user was authenticated.</li> + <li>Return the newly constructed <code>GenericPrincipal</code>.</li> + </ul> + + + <h3>Method hasRole() Functionality</h3> + + <p>When <code>hasRole()</code> is called, the following processing + is required:</p> + <ul> + <li>The <code>principal</code> that is passed as an argument SHOULD + be one that we returned (instanceof class + <code>org.apache.catalina.realm.GenericPrincipal</code>, with a + <code>realm</code> property that is equal to our instance.</li> + <li>If the passed <code>principal</code> meets these criteria, check + the specified role against the list returned by + <code>getRoles()</code>, and return <code>true</code> if the + specified role is included; otherwise, return <code>false</code>.</li> + <li>If the passed <code>principal</code> does not meet these criteria, + return <code>false</code>.</li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Username Login Mode Functionality"><!--()--></a><a name="Username_Login_Mode_Functionality"><strong>Username Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote> + + <h3>Configurable Properties</h3> + + <p>The implementation shall support the following properties + that can be configured with JavaBeans property setters:</p> + <ul> + <li><code>connectionURL</code> - URL of the directory server we will + be contacting.</li> + <li><code>contextFactory</code> - Fully qualified class name of the JNDI + context factory used to retrieve our InitialContext. + [com.sun.jndi.ldap.LdapCtxFactory]</li> + <li>Additional configuration properties required to establish the + appropriate connection. [Requested]</li> + <li>Connection pool configuration properties. [Requested]</li> + <li>Configuration properties defining if and how a user might be looked + up before binding to the directory server. The following approaches + should be supported: + <ul> + <li>No previous lookup is required - username specified by the user + is the same as that used to authenticate to the directory + server.</li> + <li>Substitute the specified username into a string.</li> + <li>Search the directory server based on configured criteria to + retrieve the distinguished name of the user, then attempt to + bind with that distinguished name.</li> + </ul></li> + <li>Configuration properties defining how the roles associated with a + particular authenticated user can be retrieved. The following + approaches should be supported: + <ul> + <li>Retrieve a specified attribute (possibly multi-valued) + from an LDAP search expression, + with a replacement placeholder for the DN of the user. + [Current]</li> + </ul></li> + </ul> + + <h3>Lifecycle Functionality</h3> + + <p>The following processing must be performed when the <code>start()</code> + method is called:</p> + <ul> + <li>None required.</li> + </ul> + + <p>The following processing must be performed when the <code>stop()</code> + method is called:</p> + <ul> + <li>None required.</li> + </ul> + + + <h3>Method authenticate() Functionality</h3> + + <p>When <code>authenticate()</code> is called, the following processing + is required:</p> + <ul> + <li>Attempt to bind to the directory server, using the username and + password provided by the user.</li> + <li>If the user was not authenticated, release the allocated connection + and return <code>null</code>.</li> + <li>Acquire a <code>List</code> of the security roles assigned to the + authenticated user.</li> + <li>Construct a new instance of class + <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as + constructor arguments: this realm instance, the authenticated + username, and a <code>List</code> of the security roles associated + with this user.</li> + <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous + <code>GenericPrincipal</code> objects for a particular user, because + the information in the directory server might have changed since the + last time this user was authenticated.</li> + <li>Return the newly constructed <code>GenericPrincipal</code>.</li> + </ul> + + + <h3>Method hasRole() Functionality</h3> + + <p>When <code>hasRole()</code> is called, the following processing + is required:</p> + <ul> + <li>The <code>principal</code> that is passed as an argument SHOULD + be one that we returned (instanceof class + <code>org.apache.catalina.realm.GenericPrincipal</code>, with a + <code>realm</code> property that is equal to our instance.</li> + <li>If the passed <code>principal</code> meets these criteria, check + the specified role against the list returned by + <code>getRoles()</code>, and return <code>true</code> if the + specified role is included; otherwise, return <code>false</code>.</li> + <li>If the passed <code>principal</code> does not meet these criteria, + return <code>false</code>.</li> + </ul> + + </blockquote></td></tr></table> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote> + + <p>In addition the the assertions implied by the functionality requirements + listed above, the following additional assertions shall be tested to + validate the behavior of <code>JNDIRealm</code>:</p> + <ul> + </ul> + +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font size="-1" color="#525D76"><em> + Copyright © 1999-2010, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/5be16a28/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-memory-realm.html ---------------------------------------------------------------------- diff --git a/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-memory-realm.html b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-memory-realm.html new file mode 100644 index 0000000..7c6e0d5 --- /dev/null +++ b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/fs-memory-realm.html @@ -0,0 +1,213 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications - MemoryRealm</title><meta content="Craig McClanahan" name="author"><style media="print" type="text/css"> + .noPrint {display: none;} + td#mainBody {width: 100%;} + </style></head><body vlink="#525D76" alink="#525D76" link="#525D76" text="#000000" bgcolor="#ffffff"><table cellspacing="0" width="100%" border="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img border="0" alt=" + Catalina Functional Specifications + " align="right" src="../images/tomcat.gif"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img border="0" alt="Apache Logo" align="right" src="../images/asf-logo.gif"></a></td></tr></table><table cellspacing="4" width="100%" border="0"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><tr><!--LEFT SIDE NAVIGATION--><td class="noPrint" nowrap valign="top" width="20%"><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 id="mainBody" align="left" valign="top" width="80%"><h1>Catalina Functional Specifications</h1><h2>MemoryRealm</h2><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote> +<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></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Overview_of_Operation">Overview of Operation</a></li><li><a href="#Detailed_Functional_Requirements">Detailed Functional Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul> +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote> + + <p>The purpose of the <strong>MemoryRealm</strong> implementation is to + provide a mechanism by which Tomcat 6 can acquire information needed + to authenticate web application users, and define their security roles, + from a simple text-based configuration file in XML format. This is + intended to simplify the initial installation and operation of Tomcat 6, + without the complexity of configuring a database or directory server + based Realm. It is not intended for production use.</p> + + <p>This specification reflects a combination of functionality that is + already present in the <code>org.apache.catalina.realm.MemoryRealm</code> + class, as well as requirements for enhancements that have been + discussed. Where appropriate, requirements statements are marked + <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p> + + <p>The current status of this functional specification is + <strong>PROPOSED</strong>. It has not yet been discussed and + agreed to on the TOMCAT-DEV mailing list.</p> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote> + + <p>The implementation of this functionality depends on the following + external specifications:</p> + <ul> + <li>None</li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote> + + <p>The implementation of this functionality shall conform to the + following requirements:</p> + <ul> + <li>Be realized in one or more implementation classes.</li> + <li>Implement the <code>org.apache.catalina.Realm</code> interface. + [Current]</li> + <li>Implement the <code>org.apache.catalina.Lifecycle</code> + interface. [Current]</li> + <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code> + base class.</li> + <li>Live in the <code>org.apache.catalina.realm</code> package. + [Current]</li> + <li>Support a configurable debugging detail level. [Current]</li> + <li>Log debugging and operational messages (suitably internationalized) + via the <code>getContainer().log()</code> method. [Current]</li> + </ul> + + </blockquote></td></tr></table> + + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + <p>The following environmental dependencies must be met in order for + MemoryRealm to operate correctly:</p> + <ul> + <li>The desire to utilize MemoryRealm must be registered in + <code>$CATALINA_BASE/conf/server.xml</code>, in a + <code><Realm></code> element that is nested inside a + corresponding <code><Engine></code>, <code><Host></code>, + or <code><Context></code> element. (This is already + included in the default <code>server.xml</code> file.)</li> + </ul> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote> + + <p>Correct operation of MemoryRealm depends on the following + specific features of the surrounding container:</p> + <ul> + <li>Interactions with <code>MemoryRealm</code> will be initiated by + the appropriate <code>Authenticator</code> implementation, based + on the login method that is selected.</li> + <li><code>MemoryRealm</code> must have an XML parser compatible with + the JAXP/1.1 APIs available to it. This is normally accomplished + by placing the corresponding JAR files in directory + <code>$CATALINA_HOME/lib</code>.</li> + </ul> + + </blockquote></td></tr></table> + + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Overview of Operation"><!--()--></a><a name="Overview_of_Operation"><strong>Overview of Operation</strong></a></font></td></tr><tr><td><blockquote> + + <p>The main purpose of <code>MemoryRealm</code> is to allow Catalina to + authenticate users, and look up the corresponding security roles, from + the information found in an XML-format configuration file. The format + of this file is described below. When a <code>MemoryRealm</code> + instance is started, it will read the contents of this XML file and create + an "in memory database" of all the valid users and their associated + security roles.</p> + + <p>Each time that Catalina needs to authenticate a user, it will call + the <code>authenticate()</code> method of this Realm implementation, + passing the username and password that were specified by the user. If + we find the user in the database (and match on the password), we accumulate + all of the security roles that are defined for this user, and create a + new <code>GenericPrincipal</code> object to be returned. If the user + is not authenticated, we return <code>null</code> instead. The + <code>GenericUser</code> object caches the set of security roles that + were owned by this user at the time of authentication, so that calls to + <code>isUserInRole()</code> can be answered without going back to the + database every time.</p> + + </blockquote></td></tr></table> + + + <table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#828DA6"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Detailed Functional Requirements"><!--()--></a><a name="Detailed_Functional_Requirements"><strong>Detailed Functional Requirements</strong></a></font></td></tr><tr><td><blockquote> + + + <h3>Configurable Properties</h3> + + <p>The implementation shall support the following properties + that can be configured with JavaBeans property setters:</p> + <ul> + <li>Configurable debugging detail level.</li> + <li>Configurable file pathname (absolute or relative to + <code>$CATALINA_BASE</code> of the XML file containing our + defined users. [<code>conf/tomcat-users.xml</code>].</li> + </ul> + + <h3>Lifecycle Functionality</h3> + + <p>The following processing must be performed when the <code>start()</code> + method is called:</p> + <ul> + <li>Open and parse the specified XML file.</li> + <li>Create an in-memory database representation of the XML file + contents.</li> + <li><strong>NOTE</strong> - There is no requirement to recognize + subsequent changes to the contents of the XML file.</li> + </ul> + + <p>The following processing must be performed when the <code>stop()</code> + method is called:</p> + <ul> + <li>Release object references to the in-memory database representation.</li> + </ul> + + + <h3>Method authenticate() Functionality</h3> + + <p>When <code>authenticate()</code> is called, the following processing + is required:</p> + <ul> + <li>Select the one and only "user" instance from the in-memory database, + based on matching the specified username. If there is no such + instance, return <code>null</code>.</li> + <li>Authenticate the user by comparing the (possibly encrypted) password + value that was received against the password presented by the user. + If there is no match, return <code>null</code>.</li> + <li>Construct a new instance of class + <code>org.apache.catalina.realm.GenericPrincipal</code> (if not + already using this as the internal database representation) that + contains the authenticated username and a <code>List</code> of the + security roles associated with this user.</li> + <li>Return the newly constructed <code>GenericPrincipal</code>.</li> + </ul> + + + <h3>Method hasRole() Functionality</h3> + + <p>When <code>hasRole()</code> is called, the following processing + is required:</p> + <ul> + <li>The <code>principal</code> that is passed as an argument SHOULD + be one that we returned (instanceof class + <code>org.apache.catalina.realm.GenericPrincipal</code>, with a + <code>realm</code> property that is equal to our instance.</li> + <li>If the passed <code>principal</code> meets these criteria, check + the specified role against the list returned by + <code>getRoles()</code>, and return <code>true</code> if the + specified role is included; otherwise, return <code>false</code>.</li> + <li>If the passed <code>principal</code> does not meet these criteria, + return <code>false</code>.</li> + </ul> + + </blockquote></td></tr></table> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote> + + <p>In addition the the assertions implied by the functionality requirements + listed above, the following additional assertions shall be tested to + validate the behavior of <code>MemoryRealm</code>:</p> + <ul> + </ul> + +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font size="-1" color="#525D76"><em> + Copyright © 1999-2010, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/5be16a28/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/index.html ---------------------------------------------------------------------- diff --git a/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/index.html b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/index.html new file mode 100644 index 0000000..e993a82 --- /dev/null +++ b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/index.html @@ -0,0 +1,40 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications - Table of Contents</title><meta content="Craig R. McClanahan" name="author"><style media="print" type="text/css"> + .noPrint {display: none;} + td#mainBody {width: 100%;} + </style></head><body vlink="#525D76" alink="#525D76" link="#525D76" text="#000000" bgcolor="#ffffff"><table cellspacing="0" width="100%" border="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img border="0" alt=" + Catalina Functional Specifications + " align="right" src="../images/tomcat.gif"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img border="0" alt="Apache Logo" align="right" src="../images/asf-logo.gif"></a></td></tr></table><table cellspacing="4" width="100%" border="0"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><tr><!--LEFT SIDE NAVIGATION--><td class="noPrint" nowrap valign="top" width="20%"><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 id="mainBody" align="left" valign="top" width="80%"><h1>Catalina Functional Specifications</h1><h2>Table of Contents</h2><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Catalina Functional Specifications"><!--()--></a><a name="Catalina_Functional_Specifications"><strong>Catalina Functional Specifications</strong></a></font></td></tr><tr><td><blockquote> + +<p>This documentation area includes <em>functional specifications</em> for +many features supported by the <strong>Catalina</strong> servlet container +portion of Tomcat 6. In most cases, these features are not documented in the +underlying Servlet or JSP specifications, so a definition of the expected +correct behavior is important both to implementors of those features, and to +test writers trying to decide what to test.</p> + +<p>The functional specifications are divided into the following categories +in the menu (to the left):</p> +<ul> +<li><em>Administrative Apps</em> - Overall requirements for supporting an + ability to configure and operate a Tomcat 6 installation through tools, + as well as detailed requirements for the tools themselves.</li> +<li><em>Internal Servlets</em> - Requirements for Catalina features that are + implemented as internal, container-managed, servlets.</li> +<li><em>Realm Implementations</em> - Requirements for the implementations of + the <code>org.apache.catalina.Realm</code> interface (providing access to + collections of users, passwords and roles) that are included in the + standard Tomcat 6 distribution.</li> +</ul> + +<p><em>NOTE</em> - In some cases, the contents of these functional specs has +been "reverse engineered" from existing implementations. This exercise is +still useful, because it provides an introduction to <strong>what</strong> +Catalina does, without being as concerned with <strong>how</strong> this is +accomplished.</p> + +<p><strong>TODO</strong> - Obviously, this area has a long ways to go before +it is complete. Contributions are welcome!</p> + +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font size="-1" color="#525D76"><em> + Copyright © 1999-2010, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/5be16a28/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/mbean-names.html ---------------------------------------------------------------------- diff --git a/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/mbean-names.html b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/mbean-names.html new file mode 100644 index 0000000..8ffbb0c --- /dev/null +++ b/attic/servers/apache-tomcat-6.0.29/webapps/docs/funcspecs/mbean-names.html @@ -0,0 +1,713 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications - Tomcat MBean Names</title><meta content="Craig McClanahan" name="author"><meta content="Amy Roh" name="author"><style media="print" type="text/css"> + .noPrint {display: none;} + td#mainBody {width: 100%;} + </style></head><body vlink="#525D76" alink="#525D76" link="#525D76" text="#000000" bgcolor="#ffffff"><table cellspacing="0" width="100%" border="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img border="0" alt=" + Catalina Functional Specifications + " align="right" src="../images/tomcat.gif"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img border="0" alt="Apache Logo" align="right" src="../images/asf-logo.gif"></a></td></tr></table><table cellspacing="4" width="100%" border="0"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><tr><!--LEFT SIDE NAVIGATION--><td class="noPrint" nowrap valign="top" width="20%"><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 id="mainBody" align="left" valign="top" width="80%"><h1>Catalina Functional Specifications</h1><h2>Tomcat MBean Names</h2><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote> +<ul><li><a href="#Background">Background</a></li><li><a href="#Catalina_Object_Hierarchy">Catalina Object Hierarchy</a></li><li><a href="#MBean_Groups_and_Names">MBean Groups and Names</a></li><li><a href="#JSR-77_Cross_Reference">JSR-77 Cross Reference</a></li><li><a href="#JSR-88_Cross_Reference">JSR-88 Cross Reference</a></li></ul> +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote> + + <p>We will be using <em>JMX MBeans</em> as the technology for + implementing manageability of Tomcat.</p> + + <p>One of the key concepts of JMX (and JSR-77) is that each management + bean has a unique name in the MBeanServer's registry, and that + management applications can utilize these names to retrieve the MBean + of interest to them for a particular management operation. + This document proposes a naming convention for MBeans that allows easy + calculation of the name for a particular MBean. For background + information on JMX MBean names, see the <em>Java Management Extensions + Instrumentation and Agent Specification</em>, version 1.0, section 6. + In particular, we will be discussing the String Representation of + <code>ObjectName</code> instances.</p> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="Catalina Object Hierarchy"><!--()--></a><a name="Catalina_Object_Hierarchy"><strong>Catalina Object Hierarchy</strong></a></font></td></tr><tr><td><blockquote> + +<p>Tomcat's servlet container implementation, called Catalina, can be +represented as a hierarchy of objects that contain references to each other. +The object hierarchy can be represented as a tree, or (isomorphically) based +on the nesting of configuration elements in the <code>conf/server.xml</code> +file that is traditionally used to configure Tomcat stand-alone.</p> + +<p>The valid component nestings for Catalina are depicted in the following +table, with columns that contain the following values:</p> +<ul> +<li><em>Pattern</em> - Nesting pattern of XML elements (in the + <code>conf/server.xml</code> file) used to configure this component.</li> +<li><em>Cardinality</em> - Minimum and maximum number of occurrences of + this element at this nesting position, which also corresponds to the + minimum and maximum number of Catalina components.</li> +<li><em>Identifier</em> - Name of the JavaBeans property of this component + that represents the unique identifier (within the nested hierarchy), + if any.</li> +<li><em>MBean ObjectName</em> - The portion of the MBean object name that + appears <strong>after</strong> the domain name. For now, it should be + assumed that all of these MBeans appear in the default JMX domain.</li> +</ul> + +<p>In the <em>MBean ObjectName</em> descriptions, several types of symbolic +expressions are utilized to define variable text that is replaced by +corresponding values:</p> +<ul> +<li><em>${GROUP}</em> - One of the standard MBean names of the specified + "group" category. For example, the expression <code>${REALM}</code> + represents the values like <code>JDBCRealm</code> and <code>JAASRealm</code> + that identify the various MBeans for possible <code>Realm</code> components.</li> +<li><em>${name}</em> - Replaced by the value of property <code>name</code> + from the current component.</li> +<li><em>${parent.name}</em> - Replaced by the value of property + <code>name</code> from a parent of the current component, with the + parent's type identified by <em>parent</em>.</li> +<li><em>${###}</em> - An arbitrary numeric identifier that preserves + order but has no other particular meaning. In general, the server will + assign numeric values to existing instances with large gaps into which + new items can be configured if desired.</li> +</ul> + +<table border="1" cellpadding="5"> + + <tr> + <th align="center" bgcolor="aqua">Pattern</th> + <th align="center" bgcolor="aqua">Cardinality</th> + <th align="center" bgcolor="aqua">Identifier</th> + <th align="center" bgcolor="aqua">MBean ObjectName</th> + </tr> + + <tr> + <td>Server</td> + <td align="center">1..1</td> + <td align="center">(none)</td> + <td><code>type=${SERVER}</code></td> + </tr> + + <tr> + <td>Server / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}</code></td> + </tr> + + <tr> + <td>Server / Service</td> + <td align="center">1..n</td> + <td align="center"><code>name</code></td> + <td><code>type=${SERVICE}, name=${name}</code></td> + </tr> + + <tr> + <td>Server / Service / Connector</td> + <td align="center">1..n</td> + <td align="center"><code>address, port</code></td> + <td><code>type=${CONNECTOR}, service=${service}, port=${port}, + address=${address}</code></td> + </tr> + + <tr> + <td>Server / Service / Connector / Factory</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td>(Only defined explicitly for an SSL connector, but can be treated + as part of the connector component)</td> + </tr> + + <tr> + <td>Server / Service / Connector / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}, service=${service}, + port=${connector.port}, address=${connector.address}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine</td> + <td align="center">1..1</td> + <td align="center">(none)</td> + <td><code>type=${ENGINE}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host</td> + <td align="center">1..n</td> + <td align="center"><code>name</code></td> + <td><code>type=${HOST}, host=${name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context</td> + <td align="center">1..n</td> + <td align="center"><code>path</code></td> + <td><code>type=${CONTEXT}, path=${path}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / InstanceListener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${INSTANCE-LISTENER}, sequence=${###}, path=${context.path}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}, path=${context.path}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Loader</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${LOADER}, path=${context.path}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Manager</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${MANAGER}, path=${context.path}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Realm</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${REALM}, path=${context.path}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Resources</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${RESOURCES}, path=${context.path}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Valve</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${VALVE}, sequence=${###}, path=${context.path}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / Wrapper</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>j2eeType=Servlet,name=${name}, + WebModule=//${host.name}/${context.name}, + J2EEApplication=${context.J2EEApplication}, + J2EEServer=${context.J2EEServer}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / WrapperLifecycle</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${WRAPPER-LIFECYCLE}, sequence=${###}, path=${context.path}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Context / WrapperListener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${WRAPPER-LISTENER}, sequence=${###}, path=${context.path}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Realm</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${REALM}, host=${host.name}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Host / Valve</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${VALVE}, sequence=${###}, + host=${host.name}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}</code> + (<strong>FIXME</strong> - disambiguate from Server / Service / + Listener)</td> + </tr> + + <tr> + <td>Server / Service / Engine / Realm</td> + <td align="center">0..1</td> + <td align="center">(none)</td> + <td><code>type=${REALM}, service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Engine / Valve</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${VALVE}, sequence=${###}, + service=${service.name}</code></td> + </tr> + + <tr> + <td>Server / Service / Listener</td> + <td align="center">0..n</td> + <td align="center">(none)</td> + <td><code>type=${LISTENER}, sequence=${###}</code> + (<strong>FIXME</strong> - disambiguate from Server / Service / + Engine / Listener)</td> + </tr> + +</table> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="MBean Groups and Names"><!--()--></a><a name="MBean_Groups_and_Names"><strong>MBean Groups and Names</strong></a></font></td></tr><tr><td><blockquote> + +<p>The following MBean names shall be defined in the resource file +<code>/org/apache/catalina/mbeans/mbeans-descriptors.xml</code> (and +therefore available for use within the Administration/Configuration +web application for Tomcat):</p> + +<table border="1" cellpadding="5"> + + <tr> + <th align="center" bgcolor="aqua">MBean Name</th> + <th align="center" bgcolor="aqua">Group Name</th> + <th align="center" bgcolor="aqua">Catalina Interface</th> + <th align="center" bgcolor="aqua">Implementation Class</th> + </tr> + + <tr> + <td><code>AccessLogValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.AccessLogValve</code></td> + </tr> + + <tr> + <td><code>BasicAuthenticator</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.authenticator.BasicAuthenticator</code></td> + </tr> + + <tr> + <td><code>CertificatesValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.CertificatesValve</code></td> + </tr> + + <tr> + <td><code>ContextConfig</code></td> + <td align="center"><code>LISTENER</code></td> + <td><code>org.apache.catalina.LifecycleListener</code></td> + <td><code>org.apache.catalina.startup.ContextConfig</code></td> + </tr> + + <tr> + <td><code>ContextEnvironment</code></td> + <td align="center"><code>RESOURCES</code></td> + <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td> + <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td> + </tr> + + <tr> + <td><code>ContextResource</code></td> + <td align="center"><code>RESOURCES</code></td> + <td><code>org.apache.catalina.deploy.ContextResource</code></td> + <td><code>org.apache.catalina.deploy.ContextResource</code></td> + </tr> + + <tr> + <td><code>ContextResourceLink</code></td> + <td align="center"><code>RESOURCES</code></td> + <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td> + <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td> + </tr> + + <tr> + <td><code>CoyoteConnector</code></td> + <td align="center"><code>CONNECTOR</code></td> + <td><code>org.apache.catalina.Connector</code></td> + <td><code>org.apache.coyote.tomcat4.CoyoteConnector</code></td> + </tr> + + <tr> + <td><code>DigestAuthenticator</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.authenticator.DigestAuthenticator</code></td> + </tr> + + <tr> + <td><code>EngineConfig</code></td> + <td align="center"><code>LISTENER</code></td> + <td><code>org.apache.catalina.LifecycleListener</code></td> + <td><code>org.apache.catalina.startup.EngineConfig</code></td> + </tr> + + <tr> + <td><code>ErrorReportValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.ErrorReportValve</code></td> + </tr> + + <tr> + <td><code>ErrorDispatcherValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.ErrorDispatcherValve</code></td> + </tr> + + <tr> + <td><code>FormAuthenticator</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.authenticator.FormAuthenticator</code></td> + </tr> + + <tr> + <td><code>Group</code></td> + <td align="center"><code>GROUP</code></td> + <td><code>org.apache.catalina.Group</code></td> + <td><code>org.apache.catalina.Group</code></td> + </tr> + + <tr> + <td><code>HostConfig</code></td> + <td align="center"><code>LISTENER</code></td> + <td><code>org.apache.catalina.LifecycleListener</code></td> + <td><code>org.apache.catalina.startup.HostConfig</code></td> + </tr> + + <tr> + <td><code>HttpConnector10</code></td> + <td align="center"><code>CONNECTOR</code></td> + <td><code>org.apache.catalina.Connector</code></td> + <td><code>org.apache.catalina.connector.http10.HttpConnector</code></td> + </tr> + + <tr> + <td><code>HttpConnector11</code></td> + <td align="center"><code>CONNECTOR</code></td> + <td><code>org.apache.catalina.Connector</code></td> + <td><code>org.apache.catalina.connector.http.HttpConnector</code></td> + </tr> + + <tr> + <td><code>JAASRealm</code></td> + <td align="center"><code>REALM</code></td> + <td><code>org.apache.catalina.Realm</code></td> + <td><code>org.apache.catalina.realm.JAASRealm</code></td> + </tr> + + <tr> + <td><code>JDBCRealm</code></td> + <td align="center"><code>REALM</code></td> + <td><code>org.apache.catalina.Realm</code></td> + <td><code>org.apache.catalina.realm.JDBCRealm</code></td> + </tr> + + <tr> + <td><code>JDBCUserDatabase</code></td> + <td align="center"><code>USERDATABASE</code></td> + <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td> + <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td> + </tr> + + <tr> + <td><code>JNDIRealm</code></td> + <td align="center"><code>REALM</code></td> + <td><code>org.apache.catalina.Realm</code></td> + <td><code>org.apache.catalina.realm.JNDIRealm</code></td> + </tr> + + <tr> + <td><code>MBeanFactory</code></td> + <td align="center"><code></code></td> + <td><code></code></td> + <td><code>org.apache.catalina.mbeans.MBeanFactory</code></td> + </tr> + + <tr> + <td><code>MemoryRealm</code></td> + <td align="center"><code>REALM</code></td> + <td><code>org.apache.catalina.Realm</code></td> + <td><code>org.apache.catalina.realm.MemoryRealm</code></td> + </tr> + + <tr> + <td><code>MemoryUserDatabase</code></td> + <td align="center"><code>USERDATABASE</code></td> + <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td> + <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td> + </tr> + + <tr> + <td><code>NamingContextListener</code></td> + <td align="center"><code>LISTENER</code></td> + <td><code>org.apache.catalina.LifecycleListener</code></td> + <td><code>org.apache.catalina.core.NamingContextListener</code></td> + </tr> + + <tr> + <td><code>NamingResources</code></td> + <td align="center"><code>RESOURCES</code></td> + <td><code>org.apache.catalina.deploy.NamingResources</code></td> + <td><code>org.apache.catalina.deploy.NamingResources</code></td> + </tr> + + <tr> + <td><code>NonLoginAuthenticator</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.authenticator.NonLoginAuthenticator</code></td> + </tr> + + <tr> + <td><code>PersistentManager</code></td> + <td align="center"><code>MANAGER</code></td> + <td><code>org.apache.catalina.Manager</code></td> + <td><code>org.apache.catalina.session.PersistentManager</code></td> + </tr> + + <tr> + <td><code>RemoteAddrValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.RemoteAddrValve</code></td> + </tr> + + <tr> + <td><code>RemoteHostValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.RemoteHostValve</code></td> + </tr> + + <tr> + <td><code>RequestDumperValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.RequestDumperValve</code></td> + </tr> + + <tr> + <td><code>Role</code></td> + <td align="center"><code>ROLE</code></td> + <td><code>org.apache.catalina.Role</code></td> + <td><code>org.apache.catalina.Role</code></td> + </tr> + + <tr> + <td><code>SingleSignOn</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.valves.SingleSignOn</code></td> + </tr> + + <tr> + <td><code>SSLAuthenticator</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.authenticator.SSLAuthenticator</code></td> + </tr> + + <tr> + <td><code>StandardContext</code></td> + <td align="center"><code>CONTEXT</code></td> + <td><code>org.apache.catalina.Context</code></td> + <td><code>org.apache.catalina.core.StandardContext</code></td> + </tr> + + <tr> + <td><code>StandardContextValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.core.StandardContextValve</code></td> + </tr> + + <tr> + <td><code>StandardEngine</code></td> + <td align="center"><code>ENGINE</code></td> + <td><code>org.apache.catalina.Engine</code></td> + <td><code>org.apache.catalina.core.StandardEngine</code></td> + </tr> + + <tr> + <td><code>StandardEngineValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.core.StandardEngineValve</code></td> + </tr> + + <tr> + <td><code>StandardHost</code></td> + <td align="center"><code>HOST</code></td> + <td><code>org.apache.catalina.Host</code></td> + <td><code>org.apache.catalina.core.StandardHost</code></td> + </tr> + + <tr> + <td><code>StandardHostValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.core.StandardHostValve</code></td> + </tr> + + <tr> + <td><code>StandardManager</code></td> + <td align="center"><code>MANAGER</code></td> + <td><code>org.apache.catalina.Manager</code></td> + <td><code>org.apache.catalina.session.StandardManager</code></td> + </tr> + + <tr> + <td><code>StandardServer</code></td> + <td align="center"><code>SERVER</code></td> + <td><code>org.apache.catalina.Server</code></td> + <td><code>org.apache.catalina.core.StandardServer</code></td> + </tr> + + <tr> + <td><code>StandardService</code></td> + <td align="center"><code>SERVICE</code></td> + <td><code>org.apache.catalina.Service</code></td> + <td><code>org.apache.catalina.core.StandardService</code></td> + </tr> + + <tr> + <td><code>StandardWrapper</code></td> + <td align="center"><code>WRAPPER</code></td> + <td><code>org.apache.catalina.Wrapper</code></td> + <td><code>org.apache.catalina.core.StandardWrapper</code></td> + </tr> + + <tr> + <td><code>StandardWrapperValve</code></td> + <td align="center"><code>VALVE</code></td> + <td><code>org.apache.catalina.Valve</code></td> + <td><code>org.apache.catalina.core.StandardWrapperValve</code></td> + </tr> + + <tr> + <td><code>User</code></td> + <td align="center"><code>USER</code></td> + <td><code>org.apache.catalina.User</code></td> + <td><code>org.apache.catalina.User</code></td> + </tr> + + <tr> + <td><code>UserDatabaseRealm</code></td> + <td align="center"><code>REALM</code></td> + <td><code>org.apache.catalina.Realm</code></td> + <td><code>org.apache.catalina.realm.UserDatabaseRealm</code></td> + </tr> + + <tr> + <td><code>WebappLoader</code></td> + <td align="center"><code>LOADER</code></td> + <td><code>org.apache.catalina.Loader</code></td> + <td><code>org.apache.catalina.loader.WebappLoader</code></td> + </tr> + +</table> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="JSR-77 Cross Reference"><!--()--></a><a name="JSR-77_Cross_Reference"><strong>JSR-77 Cross Reference</strong></a></font></td></tr><tr><td><blockquote> + +<p>The managed objects in the JSR-77 object hierarchy correspond +to the specified MBean names or groups as follows:</p> + +<table border="1" cellpadding="5"> + + <tr> + <th align="center" bgcolor="aqua">JSR-77 Managed Object</th> + <th align="center" bgcolor="aqua">MBean Name or Group</th> + <th align="center" bgcolor="aqua">Comments</th> + </tr> + + <tr> + <td><code>J2EEServer</code></td> + <td><code>${SERVICE}</code></td> + <td></td> + </tr> + + <tr> + <td><code>Node</code></td> + <td><code>${SERVICE}</code></td> + <td>Tomcat supports a single node only.</td> + </tr> + + <tr> + <td><code>Port</code></td> + <td><code>${CONNECTOR}</code></td> + <td></td> + </tr> + + <tr> + <td><code>Servlet</code></td> + <td><code>${WRAPPER}</code></td> + <td></td> + </tr> + + <tr> + <td><code>WebModule</code></td> + <td><code>${CONTEXT}</code></td> + <td></td> + </tr> + +</table> + +</blockquote></td></tr></table><table cellpadding="2" cellspacing="0" border="0"><tr><td bgcolor="#525D76"><font face="arial,helvetica.sanserif" color="#ffffff"><a name="JSR-88 Cross Reference"><!--()--></a><a name="JSR-88_Cross_Reference"><strong>JSR-88 Cross Reference</strong></a></font></td></tr><tr><td><blockquote> + +<p>The deployment objects in the JSR-88 API object hierarchy correspond +to the specified MBean names or groups as follows:</p> + +<table border="1" cellpadding="5"> + + <tr> + <th align="center" bgcolor="aqua">JSR-88 API Object</th> + <th align="center" bgcolor="aqua">MBean Name or Group</th> + <th align="center" bgcolor="aqua">Comments</th> + </tr> + + <tr> + <td><code>DeployableObject</code></td> + <td><code>${CONTEXT}</code></td> + <td>Context deployment info plus the corresponding WAR file</td> + </tr> + + <tr> + <td><code>Target</code></td> + <td><code>${HOST}</code></td> + <td></td> + </tr> + +</table> + +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr size="1" noshade></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font size="-1" color="#525D76"><em> + Copyright © 1999-2010, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file
