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 ></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: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"> </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="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 ></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: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>