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="[EMAIL PROTECTED]" 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 ></a><a class="menu" href="http://jakarta.apache.org">jakarta ></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:[EMAIL PROTECTED]">Berin Loritsch</a>, <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>, <a href="mailto:[EMAIL PROTECTED]">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"> </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 ©1999-2002 by the Apache Software Foundation. - All Rights Reserved. - </i></font></td> + + + + + + +<div id="authors">by Berin Loritsch, Peter Donald, Leo Simons</div> +</div> +<script language="JavaScript"> +<!-- +document.write("last modified: " + document.lastModified); +// --> +</script></td> </tr> </table> +</div> +<div id="footer"> + Copyright ©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="[EMAIL PROTECTED]" 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 ></a><a class="menu" href="http://jakarta.apache.org">jakarta ></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"> </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 Paul Hammant</div> </div> <script language="JavaScript"> <!-- document.write("last modified: " + document.lastModified); // --> </script></td> </tr> </table> </div> <div id="footer"> Copyright ©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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
