You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/06/09 21:36:03 UTC

cvs commit: jakarta-avalon-site/docs/framework reference-containers.html reference-the-lifecycle.html

hammant     2002/06/09 12:36:02

  Modified:    docs/framework reference-the-lifecycle.html
  Added:       docs/framework reference-containers.html
  Log:
  more words
  
  Revision  Changes    Path
  1.2       +360 -294  jakarta-avalon-site/docs/framework/reference-the-lifecycle.html
  
  Index: reference-the-lifecycle.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/framework/reference-the-lifecycle.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- reference-the-lifecycle.html	10 May 2002 21:52:40 -0000	1.1
  +++ reference-the-lifecycle.html	9 Jun 2002 19:36:02 -0000	1.2
  @@ -2,543 +2,609 @@
   <head>
   <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Avalon Framework - The Component Lifecycle</title>
  +<meta value="Leo Simons" name="author">
  +<meta value="leosimons@apache.org" name="email">
  +<link href="skin/common.css" type="text/css" rel="stylesheet">
   </head>
  -<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#023264" vlink="#023264" link="#525D76" text="#000000">
  -<table border="0" cellpadding="0" cellspacing="0" width="100%">
  +<body>
  +<div id="header">
  +<table cellspacing="0" cellpadding="0" border="0" width="100%">
   <tr>
  -<td align="left" valign="top"><a href="http://jakarta.apache.org/index.html"><img src="images/jakarta-logo.gif" border="0" vspace="0" hspace="0"></a></td><td bgcolor="#ffffff" align="left" valign="top" width="100%"><img src="images/header.gif" align="right" border="0" vspace="0" hspace="0"></td>
  -</tr>
  -<tr>
  -<td colspan="2" height="2" width="100%">
  -<hr size="1" noshade="">
  -</td>
  +<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
   </tr>
   </table>
  -<table border="0" cellpadding="0" cellspacing="0" width="100%">
  +</div>
  +<div id="breadcrumbs">
  +<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  +</div>
  +<div id="main">
  +<table cellspacing="0" cellpadding="0" border="0" width="100%">
   <tr>
  -<td valign="top" width="1%"></td><td nowrap="1" valign="top" width="14%">
  -<br>
  -<font face="arial,helvetica,sanserif">
  -<br>
  -<br>
  -<a href="http://jakarta.apache.org/"><font size="+1" color="#778899">Jakarta main</font></a>
  -<br>
  -<br>
  -<a href="http://jakarta.apache.org/avalon"><font size="+1" color="#778899">Avalon main</font></a>
  -<br>
  -<br>
  -<font size="+1" color="#000000">Essentials</font>
  -<br>
  -<font size="-1">
  +<td valign="top">
  +<div id="menu">
  +<div id="submenu">
  +<h4>Essentials</h4>
   <ul>
   <li>
  -<a href="index.html"><font size="-1">Overview</font></a>
  +<a href="index.html">Overview</a>
   </li>
   <li>
  -<a href="features.html"><font size="-1">Features</font></a>
  +<a href="features.html">Features</a>
   </li>
   <li>
  -<a href="getting-started.html"><font size="-1">Getting started</font></a>
  +<a href="getting-started.html">Getting started</a>
   </li>
   <li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon/release/framework"><font size="-1">Download</font></a>
  +<a href="http://jakarta.apache.org/builds/jakarta-avalon/release/framework">Download</a>
   </li>
   </ul>
  -</font>
  -<br>
  -<br>
  -<font size="+1" color="#000000">Guide</font>
  -<br>
  -<font size="-1">
  +</div>
  +<div id="submenu">
  +<h4>Guide</h4>
   <ul>
   <li>
  -<a href="guide-oop-best-practices.html"><font size="-1">OOP best practices</font></a>
  +<a href="guide-oop-best-practices.html">OOP best practices</a>
   </li>
   <li>
  -<a href="guide-patterns-what-are.html"><font size="-1">What are patterns?</font></a>
  +<a href="guide-patterns-what-are.html">What are patterns?</a>
   </li>
   <li>
  -<a href="guide-patterns-in-avalon.html"><font size="-1">Patterns in Avalon</font></a>
  +<a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
   </li>
   <li>
  -<a href="guide-cop-what-is.html"><font size="-1">What is COP?</font></a>
  +<a href="guide-cop-what-is.html">What is COP?</a>
   </li>
   <li>
  -<a href="guide-cop-in-avalon.html"><font size="-1">COP in Avalon</font></a>
  +<a href="guide-cop-in-avalon.html">COP in Avalon</a>
   </li>
   <li>
  -<a href="guide-where-to-go-from-here.html"><font size="-1">Where to go from here</font></a>
  +<a href="guide-where-to-go-from-here.html">Where to go from here</a>
   </li>
   </ul>
  -</font>
  -<br>
  -<br>
  -<font size="+1" color="#000000">Reference</font>
  -<br>
  -<font size="-1">
  +</div>
  +<div id="submenu">
  +<h4>Reference</h4>
   <ul>
   <li>
  -<a href="http://jakarta.apache.org/avalon/api/index.html"><font size="-1">API Docs</font></a>
  +<a href="http://jakarta.apache.org/avalon/api/index.html">API Docs</a>
  +</li>
  +<li>
  +<a href="diagrams/">Diagrams Docs</a>
   </li>
   <li>
  -<a href="diagrams/index.html"><font size="-1">Diagrams Docs</font></a>
  +<a href="reference-the-lifecycle.html">The Lifecycle</a>
   </li>
   <li>
  -<a href="reference-the-lifecycle.html"><font size="-1">The Lifecycle</font></a>
  +<a href="reference-containers.html">Containers</a>
   </li>
   </ul>
  -</font>
  -<br>
  -<br>
  -<font size="+1" color="#000000">For Developers</font>
  -<br>
  -<font size="-1">
  +</div>
  +<div id="submenu">
  +<h4>For Developers</h4>
   <ul>
   <li>
  -<a href="for-developers-changes.html"><font size="-1">Changes</font></a>
  +<a href="for-developers-changes.html">Changes</a>
   </li>
   <li>
  -<a href="http://jakarta.apache.org/avalon/code-standards.html"><font size="-1">Coding standards</font></a>
  +<a href="http://jakarta.apache.org/avalon/code-standards.html">Coding standards</a>
   </li>
   <li>
  -<a href="for-developers-project-structure.html"><font size="-1">Project Structure</font></a>
  +<a href="for-developers-project-structure.html">Project Structure</a>
   </li>
   <li>
  -<a href="http://jakarta.apache.org/site/cvsindex.html"><font size="-1">CVS</font></a>
  +<a href="http://jakarta.apache.org/site/cvsindex.html">CVS</a>
   </li>
   <li>
  -<a href="http://jakarta.apache.org/site/mail.html"><font size="-1">Mailing Lists</font></a>
  +<a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
   </li>
   </ul>
  -</font>
  -<br>
  -<br>
  -</font></td><td align="left" valign="top" width="*">
  -<title>Avalon Framework - The Component Lifecycle</title>
  -<center>
  -<table width="100%">
  -<tr>
  -<td bgcolor="#99aabb">
  -<center>
  -<b><font face="arial,helvetica,sanserif" color="#000000" size="+2">Avalon Framework - The Component Lifecycle</font></b>
  -</center>
  -</td>
  -</tr>
  -</table>
  -</center>
  -<br>
  -<font size="-2" face="arial,helvetica,sanserif" color="#000000">
  -<p>by <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>, <a href="mailto:peter@apache.org">Peter Donald</a>, <a href="mailto:mail@leosimons.com">Leo Simons</a>
  -</p>
  -</font><font face="arial,helvetica,sanserif" color="#000000"></font>
  -<br>
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="100%">
  -<tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Introduction</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +</div>
  +</div>
  +</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  +<div id="title">
  +<h1>Avalon Framework - The Component Lifecycle</h1>
  +</div>
  +<div id="contents">
  +
  +  
  +
  +  
  +
  +    
  +<h2>Introduction</h2>
  +<div class="section">
  +
  +      
  +<p>
  +
  +        A Component lives within something called a container. The contract between a 
  +
  +        container and a contained Component is simple: the container is required to 
  +
  +        take a Component through what is called its <b>lifecycle</b>.
  +
  +      </p>
  +
         
  -<p align="justify">
  -        A Component lives within something called a container. Avalon provides an
  -        application that functions as a container for Applications (which are
  -        Components) called <a href="http://jakarta.apache.org/avalon/phoenix/index.html">Phoenix</a>.
  -        You can also create your own Components that function as a container.
  +<p>
  +
  +        The Avalon project provides an
  +
  +        application that functions as a container for componentized applications 
  +
  +        called <a href="http://jakarta.apache.org/avalon/phoenix/index.html">Phoenix</a>.  This is not 
  +
  +        exclusive, components adhering to lifecycle interfaces, can be mounted in 
  +
  +        custom containers.  Cocoon and others mounts their own containers for 
  +
  +        components and invoke relevant methods from the lifecycle interfaces.  See
  +
  +        <a href="reference-containers.html">Containers</a>.
  +
         </p>
  +
         
  -<p align="justify">
  -        The contract between a container and a contained Component is simple: the
  -        container is required to take a Component through what is called its
  -        <em>lifecycle</em>.
  +<p>
  +
  +        The lifecyle methods from Avalon Framework sub-project are designed to be
  +
  +        used by just about any component hosted by any container.  Of course, the API
  +
  +        in question may well require additional interfaces for strongly typed 
  +
  +        functionality, but these interfaces should negate the need for any duplication
  +
  +        of effort.
  +
         </p>
  +
       
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="100%">
  -<tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>The Lifecycle</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +
  +    
  +<h2>The Lifecycle</h2>
  +<div class="section">
  +
         
  -<p align="justify">
  +<p>
  +
           The lifecycle of a Component specifies the methods that can be called on it,
  +
           and the order in which this may happen. Some methods can be called only once
  -        in a specific <code>Phase</code> of a Component its lifecycle, others may
  +
  +        in a specific <span class="fixed">Phase</span> of a Component its lifecycle, others may
  +
           be called multiple times. These methods are called the lifecycle methods.
  +
         </p>
  +
         
  -<p align="justify">
  +<p>
  +
           It is up to each container to indicate which lifecycle methods it will honor.
  +
           This should be clearly documented together with the description of the
  -        container. Phoenix supports all of the lifecycle methods defined in the
  +
  +        container. A sister project to Phoenix supports all of the lifecycle methods defined in the
  +
           Avalon Framework API.
  +
         </p>
  +
       
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="100%">
  -<tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>The Lifecycle interfaces</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +
  +    
  +<h2>The Lifecycle interfaces</h2>
  +<div class="section">
  +
         
  -<p align="justify">
  +<p>
  +
           A Component exposes its lifecycle methods by implementing the lifecycle
  +
           interfaces. Each of these defines one or more methods that represent a
  +
           specific Phase in a Component's lifecycle. The defined interfaces are:
  +
         </p>
  +
         
  +<blockquote>
   <ol>
  +
           
   <li>LogEnabled</li>
  +
           
   <li>Contextualizable</li>
  +
           
   <li>Composable</li>
  +
           
   <li>Configurable</li>
  +
           
   <li>Parameterizable</li>
  +
           
   <li>Initializable</li>
  +
           
   <li>Startable</li>
  +
           
   <li>Suspendable</li>
  +
           
   <li>Recontextualizable</li>
  +
           
   <li>Recomposable</li>
  +
           
   <li>Reconfigurable</li>
  +
           
   <li>Reparameterizable</li>
  +
           
   <li>Stoppable</li>
  +
           
   <li>Disposable</li>
  +
         
   </ol>
  +</blockquote>
  +
         
  -<note>
  -        
  -<em>Note:</em>java.lang.Runnable has also been in use as a lifecycle
  +<p>
  +<i>
  +
  +        <b>Note:</b>java.lang.Runnable has also been in use as a lifecycle
  +
           interface. This is not recommended and is not supported by Avalon. Instead,
  +
           the run() method is the responsibility of the Component itself. If you wish
  -        to use it, call it from within start() or another method.
  -      </note>
  +
  +        to use it, call it from within start() or another method.  
  +
  +      </i>
  +</p>
  +
       
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="100%">
  -<tr>
  -<td bgcolor="bbccdd"><font face="arial,helvetica,sanserif" color="#000000" size="+1"><b>Phase order</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +
  +    
  +<h2>Phase order</h2>
  +<div class="section">
  +
         
  -<p align="justify">
  +<p>
  +
           The order in which the various lifecycle methods are called is very specific.
  +
           While none are required (it is possible to have a Component implementing
  +
           none of the lifecycle methods, although the use of that would be limited),
  +
           some can only be used when others are as well. This is best explained using
  +
           a few examples.
  +
         </p>
  +
         
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="99%">
  -<tr>
  -<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>simple examples</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +<h3>simple examples</h3>
  +<div class="section">
  +
           
  -<p align="justify">The lifecycle of a <code>Component</code> implementing only Configurable for
  +<p>The lifecycle of a <span class="fixed">Component</span> implementing only Configurable for
  +
           example will be:</p>
  +
           
  +<blockquote>
   <ol>
  +
             
   <li>constructor</li>
  +
             
   <li>configure</li>
  +
             
   <li>finalize</li>
  +
           
   </ol>
  +</blockquote>
  +
           
  -<p align="justify">The lifecycle of a <code>Component</code> implementing only Composable will be:</p>
  +<p>The lifecycle of a <span class="fixed">Component</span> implementing only Composable will be:</p>
  +
           
  +<blockquote>
   <ol>
  +
             
   <li>constructor</li>
  +
             
   <li>compose</li>
  +
             
   <li>finalize</li>
  +
           
   </ol>
  +</blockquote>
  +
         
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  +
         
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="99%">
  -<tr>
  -<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>complete</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  -        
  -<p align="justify">
  -          If a <code>Component</code> implements more than one interface the order of
  +<h3>complete</h3>
  +<div class="section">
  +
  +        
  +<p>
  +
  +          If a <span class="fixed">Component</span> implements more than one interface the order of
  +
             the events (compose, configure etc.) follow a specific order. A Component
  -          implementing all above interfaces (including Runnable) will follow this
  -          specific path:
  +
  +          implementing all above interfaces (including Runnable) will follow these
  +
  +          specific paths.
  +
           </p>
  +
           
  +<p>
  +
  +          Startup Phase:
  +
  +        </p>
  +
  +        
  +<blockquote>
   <ol>
  +
             
  -<li>constructor</li>
  +<li>constructor <b>as a consequence of instantiation</b>
  +</li>
  +
             
   <li>contextualize</li>
  +
             
   <li>compose</li>
  +
             
   <li>configure</li>
  +
             
   <li>parameterize</li>
  +
             
   <li>initialize</li>
  +
             
   <li>start</li>
  -          
  -<li>
  -            
  +
  +        
  +</ol>
  +</blockquote>
  +
  +        
  +<p>
  +
  +          At various or repeated times after startup:
  +
  +        </p>
  +
  +        
  +<blockquote>
   <ol>
  -              
  +
  +          
   <li>suspend</li>
  -              
  +
  +          
   <li>recontextualize</li>
  -              
  +
  +          
   <li>recompose</li>
  -              
  +
  +          
   <li>reconfigure</li>
  -              
  +
  +          
   <li>reparameterize</li>
  -              
  +
  +          
   <li>resume</li>
  -            
  +
  +        
   </ol>
  -          
  -</li>
  +</blockquote>
  +
  +        
  +<p>
  +
  +          Shutdown Phase:
  +
  +        </p>
  +
  +        
  +<blockquote>
  +<ol>
  +
             
   <li>stop</li>
  +
             
   <li>dispose</li>
  +
             
  -<li>finalize</li>
  +<li>finalize <b>at some indeterminate moment by the garbage collector</b>
  +</li>
  +
           
   </ol>
  +</blockquote>
  +
         
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  +
         
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="99%">
  -<tr>
  -<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Phases executed once</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +<h3>Phases executed once</h3>
  +<div class="section">
  +
           
  -<p align="justify">
  +<p>
  +
             These lifecycle methods are only called once in the entire life of a
  +
             Component:
  +
           </p>
  +
           
  +<blockquote>
   <ul>
  +
             
   <li>contextualize</li>
  +
             
   <li>compose</li>
  +
             
   <li>configure</li>
  +
             
   <li>parameterize</li>
  +
             
   <li>initialize</li>
  +
             
   <li>dispose</li>
  +
           
   </ul>
  +</blockquote>
  +
         
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  +
         
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="99%">
  -<tr>
  -<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>Phases executed once or more</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +<h3>Phases executed once or more</h3>
  +<div class="section">
  +
           
  -<p align="justify">
  +<p>
  +
             These lifecycle methods are called at least once and possibly more, depending
  +
             on the container:
  +
           </p>
  +
           
  +<blockquote>
   <ul>
  +
             
   <li>start</li>
  +
             
   <li>stop</li>
  +
           
   </ul>
  +</blockquote>
  +
         
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  +
         
  -<div align="right">
  -<table cellspacing="0" cellpadding="2" border="0" width="99%">
  -<tr>
  -<td bgcolor="ddeeff"><font face="arial,helvetica,sanserif" color="#000000" size="+0"><b>The Suspendable Interface</b></font></td>
  -</tr>
  -<tr>
  -<td><font face="arial,helvetica,sanserif" color="#000000">
  -<br>
  +<h3>The Suspendable Interface</h3>
  +<div class="section">
  +
           
  -<p align="justify">
  +<p>
  +
             The methods suspend() and resume() are not guaranteed to be called at all,
  +
             even when implemented. They can be called more than once, but only after
  +
             one another and between start() and stop(). The reason they exist is so 
  +
             the container can notify the Component it needs to come to temporary stop 
  +
             any operations. The container may need to perform some synchronized operation 
  +
             on one of the Components used by this Component, or it may wish to call any 
  +
             of the following methods, which can also be called zero or more times, and 
  +
             only between a suspend() and a resume().
  +
           </p>
  +
           
  +<blockquote>
   <ul>
  +
             
   <li>recontextualize()</li>
  +
             
   <li>recompose()</li>
  +
             
   <li>reconfigure()</li>
  +
             
   <li>reparameterize()</li>
  +
           
   </ul>
  +</blockquote>
  +
         
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  -<!--
  -      <s2 title="The Command Pattern">
  -        <p>
  -          The most advanced, most complicated and most flexible option is to use
  -          the Command pattern by having your Component implement the Commandable
  -          interface. This is experimental; you'll find the Commandable and its
  -          related classes in the excalibur package.
  -        </p>
  -        <p>
  -          It is recommended that if your Component implements Commandable, it should
  -          not implement Executable or Interruptable. When you do choose to combine the
  -          two, the order in which the different steps must happen is very specific:
  -          <code>
  -// inside container...<br />
  -// ...<br />
  -myComponent.initialize();<br />
  -myComponent.start();<br />
  -Iterator commands = myComponent.getCommands();<br />
  -runAll(commands);<br />
  -myComponent.suspend();<br />
  -myComponent.resume();<br />
  -myComponent.suspend();<br />
  -myComponent.resume();<br />
  -myComponent.stop();<br />
  -myComponent.dispose();<br />
  -// ...<br />
  -// on shutdown...<br />
  -stopAll(commands);<br />
  -commands = null;<br />
  -myComponent = null;<br />
  -System.gc(); // finalize() is called on myComponent, which allows it to perform some<br />
  -             // final operation on its Commands.<br />
  -          </code>
  -        </p>
  -        <p>
  -          The advantage of using Commands is that you can have multiple processes running
  -          outside your Component that can manipulate it. These will run until completion
  -          even if you Component has already been disposed of.
  -        </p>
  -        <p>
  -          You should note that the Command interface we use extends Runnable, which means
  -          Commands can be (and usually are) run() using standard pooling utilities for
  -          threads.
  -        </p>
  -      </s2>
  --->
  +
  +
  +
       
  -</font></td>
  -</tr>
  -</table>
   </div>
  -<br>
  -</td>
  -</tr>
  -</table>
  -<br>
  -<table cellpadding="0" cellspacing="0" border="0" width="100%">
  -<tr>
  -<td>
  -<hr size="1" noshade="">
  -</td>
  -</tr>
  -<tr>
  -<td align="center"><font color="#525D76" size="-1" face="arial,helvetica,sanserif"><i>
  -              Copyright &copy;1999-2002 by the Apache Software Foundation.
  -              All Rights Reserved.
  -            </i></font></td>
  +
  +  
  +
  +  
  +
  +
  +<div id="authors">by&nbsp;Berin Loritsch,&nbsp;Peter Donald,&nbsp;Leo Simons</div>
  +</div>
  +<script language="JavaScript">
  +<!-- 
  +document.write("last modified: " + document.lastModified); 
  +//  -->
  +</script></td>
   </tr>
   </table>
  +</div>
  +<div id="footer">
  +						 Copyright &copy;1999-2002 Apache Software Foundation. All Rights Reserved.
  +
  +			</div>
  +<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
   </body>
   </html>
  
  
  
  1.1                  jakarta-avalon-site/docs/framework/reference-containers.html
  
  Index: reference-containers.html
  ===================================================================
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Avalon Framework - Containers</title>
  <meta value="Leo Simons" name="author">
  <meta value="leosimons@apache.org" name="email">
  <link href="skin/common.css" type="text/css" rel="stylesheet">
  </head>
  <body>
  <div id="header">
  <table cellspacing="0" cellpadding="0" border="0" width="100%">
  <tr>
  <td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  </tr>
  </table>
  </div>
  <div id="breadcrumbs">
  <a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  </div>
  <div id="main">
  <table cellspacing="0" cellpadding="0" border="0" width="100%">
  <tr>
  <td valign="top">
  <div id="menu">
  <div id="submenu">
  <h4>Essentials</h4>
  <ul>
  <li>
  <a href="index.html">Overview</a>
  </li>
  <li>
  <a href="features.html">Features</a>
  </li>
  <li>
  <a href="getting-started.html">Getting started</a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/builds/jakarta-avalon/release/framework">Download</a>
  </li>
  </ul>
  </div>
  <div id="submenu">
  <h4>Guide</h4>
  <ul>
  <li>
  <a href="guide-oop-best-practices.html">OOP best practices</a>
  </li>
  <li>
  <a href="guide-patterns-what-are.html">What are patterns?</a>
  </li>
  <li>
  <a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
  </li>
  <li>
  <a href="guide-cop-what-is.html">What is COP?</a>
  </li>
  <li>
  <a href="guide-cop-in-avalon.html">COP in Avalon</a>
  </li>
  <li>
  <a href="guide-where-to-go-from-here.html">Where to go from here</a>
  </li>
  </ul>
  </div>
  <div id="submenu">
  <h4>Reference</h4>
  <ul>
  <li>
  <a href="http://jakarta.apache.org/avalon/api/index.html">API Docs</a>
  </li>
  <li>
  <a href="diagrams/">Diagrams Docs</a>
  </li>
  <li>
  <a href="reference-the-lifecycle.html">The Lifecycle</a>
  </li>
  <li>
  <a href="reference-containers.html">Containers</a>
  </li>
  </ul>
  </div>
  <div id="submenu">
  <h4>For Developers</h4>
  <ul>
  <li>
  <a href="for-developers-changes.html">Changes</a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/avalon/code-standards.html">Coding standards</a>
  </li>
  <li>
  <a href="for-developers-project-structure.html">Project Structure</a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/site/cvsindex.html">CVS</a>
  </li>
  <li>
  <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
  </li>
  </ul>
  </div>
  </div>
  </td><td width="10">&nbsp;</td><td width="100%" valign="top">
  <div id="title">
  <h1>Avalon Framework - Containers</h1>
  </div>
  <div id="contents">
  
    
  
    
  
      
  <h2>Introduction</h2>
  <div class="section">
  
        
  <p> 
  
          There are various container that are aware of the Avalon-Framework interfaces.  
  
          They either support all or some of the interfaces.  They either add 
  
          <a href="guide-patterns-ioc.html">Inversion-of-Control</a> type interfaces 
  
          of their own constituting a specialized API, or do not, making them general 
  
          containers.
  
        </p>      
  
      
  </div>      
  
      
  <h2>General Containers</h2>
  <div class="section">
  
        
  <p>
  
          These typically run from the command line and are launched via a legacy main() method.
  
        </p>
  
        
  <h3>Avalon Phoenix</h3>
  <div class="section">
  
          
  <p>
  
            This is a sister project to Avalon Framework.  It provides an environment 
  
            for launching of more or less unrestricted server applications as hosted 
  
            components.  These comps will be things like web-server, rdbms, EJB-server.
  
            See <a href="http://jakarta.apache.org/avalon/phoenix/index.html">Phoenix</a>.
  
          </p>
  
        
  </div>
  
      
  </div>
  
      
  <h2>Specialized Containers</h2>
  <div class="section">
  
        
  <p>
  
          These typically run inside something else and are launched by that something else.
  
        </p>
  
        
  <h3>Excalibur Component Manager</h3>
  <div class="section">
  
          
  <p>
  
            This is used by various applications like Cocoon. Cocoon is run inside the 
  
            Sun specified servlet context of a web-app.  It is designed for such 
  
            Servlet-context reuse.  See TODO.
  
          </p>
  
        
  </div>
  
        
  <h3>Enterprise Object Broker (EOB)</h3>
  <div class="section">
  
          
  <p>
  
            The reference implementation of the EJB-replacement container runs on top of 
  
            Phoenix.  EOB supports a subset of the Avalon Framework interfaces but allows
  
            RPC publishing of arbitary interfaces apparent in a hosted components object
  
            model.  See <a href="http://eob.sourceforge.net/">EOB</a>.
  
          </p>
  
        
  </div>      
  
      
  </div>    
  
    
  
    
  
  
  <div id="authors">by&nbsp;Paul Hammant</div>
  </div>
  <script language="JavaScript">
  <!-- 
  document.write("last modified: " + document.lastModified); 
  //  -->
  </script></td>
  </tr>
  </table>
  </div>
  <div id="footer">
  						 Copyright &copy;1999-2002 Apache Software Foundation. All Rights Reserved.
  
  			</div>
  <a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  </body>
  </html>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>