bloritsch 2003/02/20 06:49:32
Modified: site/framework guide-patterns-soii.html index.html
reference-containers.html
Added: site/framework changes.html
Log:
update the framework docs
Revision Changes Path
1.3 +383 -1 avalon-site/site/framework/guide-patterns-soii.html
Index: guide-patterns-soii.html
===================================================================
RCS file: /home/cvs/avalon-site/site/framework/guide-patterns-soii.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- guide-patterns-soii.html 20 Feb 2003 14:26:08 -0000 1.2
+++ guide-patterns-soii.html 20 Feb 2003 14:49:32 -0000 1.3
@@ -1 +1,383 @@
-<html><head><title>Resource not Found</title><STYLE><!--H1{font-family :
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family :
sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color :
white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE>
</head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1"
noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> <u>Page Not
Available.</u></p><p><b>description</b> <u>The requested resource couldn't be
found.</u></p><p><b>sender</b> org.apache.cocoon.Main</p><p><b>source</b> Cocoon
commandline
(Main.java)</p><p><b>request-uri</b><pre>framework/guide-patterns-soii.html</pre></p><p><b>missing-file</b><pre>site\framework\guide-patterns-soii.html</pre></p><hr
size="1" noshade="true"/></body></html>
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<!--*** This is a generated file. Do not edit. ***-->
+<link rel="stylesheet" href="skin/tigris.css" type="text/css">
+<link rel="stylesheet" href="skin/mysite.css" type="text/css">
+<link rel="stylesheet" href="skin/site.css" type="text/css">
+<link media="print" rel="stylesheet" href="skin/print.css" type="text/css">
+<title>Avalon Framework - Guide - Separation of Interface and
Implementation</title>
+</head>
+<body bgcolor="white" class="composite">
+<!--================= start Banner ==================-->
+<div id="banner">
+<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
+<tbody>
+<tr>
+<!--================= start Group Logo ==================-->
+<td align="left">
+<div class="groupLogo">
+<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache"
src="images/group-logo.gif"></a>
+</div>
+</td>
+<!--================= end Group Logo ==================-->
+<!--================= start Project Logo ==================--><td align="right">
+<div class="projectLogo">
+<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache
Avalon" src="images/project-logo.gif"></a>
+</div>
+</td>
+<!--================= end Project Logo ==================-->
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Banner ==================-->
+<!--================= start Main ==================-->
+<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav"
id="breadcrumbs">
+<tbody>
+<!--================= start Status ==================-->
+<tr class="status">
+<td>
+<!--================= start BreadCrumb ==================--><a href=""></a><a
href=""></a><a href=""></a>
+<!--================= end BreadCrumb ==================--></td><td id="tabs">
+<!--================= start Tabs ==================-->
+<div class="tab">
+<span class="unselectedTab"><a href="http://avalon.apache.org/">Avalon
Home</a></span> | <span class="selectedTab"><a href="index.html"><font
color="#000000">Framework</font></a></span> | <span class="unselectedTab"><a
href="http://avalon.apache.org/components/">Components</a></span> | <span
class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/seca/">SECA</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
+</div>
+<!--================= end Tabs ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+<!--================= end Status ==================-->
+<table id="main" width="100%" cellpadding="8" cellspacing="0" summary=""
border="0">
+<tbody>
+<tr valign="top">
+<!--================= start Menu ==================-->
+<td id="leftcol">
+<div id="navcolumn">
+<div class="menuBar">
+<div class="menu">
+<span class="menuLabel">Essentials</span>
+
+<div class="menuItem">
+<a href="index.html">Overview</a>
+</div>
+
+<div class="menuItem">
+<a href="getting-started.html">Getting Started</a>
+</div>
+
+<div class="menuItem">
+<a href="http://jakarta.apache.org/builds/avalon/release/framework">Download</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Guide</span>
+
+<div class="menuItem">
+<a href="guide-oop-best-practices.html">OOP best Practices</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-what-are.html">What are Patterns?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-what-is.html">What is COP?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-in-avalon.html">COP in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-where-to-go-from-here.html">Where to Go from here</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Reference</span>
+
+<div class="menuItem">
+<a href="changes.html">Changes</a>
+</div>
+
+<div class="menuItem">
+<a href="http://avalon.apache.org/api/index.html">API Docs</a>
+</div>
+
+<div class="menuItem">
+<a href="reference-the-lifecycle.html">The Lifecycle</a>
+</div>
+
+<div class="menuItem">
+<a href="reference-containers.html">Containers</a>
+</div>
+
+</div>
+</div>
+</div>
+</td>
+<!--================= end Menu ==================-->
+<!--================= start Content ==================--><td>
+<div id="bodycol">
+<div class="app">
+<div align="center">
+<h1>Avalon Framework - Guide - Separation of Interface and Implementation</h1>
+</div>
+<div class="h3">
+
+
+
+<div class="h3">
+<h3>Introduction</h3>
+</div>
+
+
+<p>
+ The core concept of interface and implementation separation is built into
+ Java itself in that it has interfaces and classes. Many toolkits have
+ been developed along the lines of an API / implementation separation.
+ One such toolkit is the SAX API and the multiple XML parsers that implement
+ it. Developers are quite happy using Apache's Xerces via the SAX API and
+ understand that SAX represents the interface and Xerces an implementation.
+ We notice that a lot of developers are happy to use interface/impl
+ separated tools, but not to make them. We will try to justify in this
+ document why we think people making applications should define
+ interface/impl boundaries early in the design cycle.
+ </p>
+
+<div class="h4">
+<h4>Justification</h4>
+</div>
+
+
+<p>
+ The main reason we do it is because:
+ </p>
+
+<ol>
+
+<li>it forces you to decouple different modules/components/objects</li>
+
+<li>if specified correctly allows you to easily change the implementation of
+ the interface/contract in the future</li>
+
+<li>makes it possible for a user to read documentation about the interface
+ without having the implementation details clutter up their
perception</li>
+
+<li>increases the possibility of reuse in a larger application</li>
+
+</ol>
+
+<p>
+ If you are building objects with the aim of reuse then [3] is important
but
+ most people don't build for reuse (and most XP advocates say you should
just
+ plan to use not reuse) and thus [1] and [2] are more important. If you
feel
+ like documenting that and expanding this then feel free to.
+ </p>
+
+
+<div class="h4">
+<h4>Example</h4>
+</div>
+
+
+<p>
+ Let us hope this is not necessary:
+ </p>
+
+<pre class="code">
+package helloworld;
+public interface HelloWorld {
+ void sayHello(String greeting);
+}
+
+package helloworld.impl.default;
+public class DefaultHelloWorld implements HelloWorld {
+ void sayHello(String greeting) {
+ System.out.println("HelloWorld Greeting: " + greeting);
+ }
+}
+
+package helloworld.impl.remote;
+public class RemoteHelloWorld implements HelloWorld {
+ private RemoteMessager mRemoteMessager;
+ public RemoteHelloWorld(RemoteMessager rm) {
+ RemoteMessager = rm;
+ }
+ void sayHello(String greeting) {
+ rm.sendMessage("HelloWorld Greeting: " + greeting);
+ }
+}
+</pre>
+
+
+
+<div class="h4">
+<h4>History</h4>
+</div>
+
+
+<p>
+ We are referring to this pattern as <strong>interface/impl
separation</strong>.
+ Wiley's Patterns in Java book refers to it simply as 'Interface', but we
feel
+ that the word interface is overloaded enough in English and computing.
+ </p>
+
+<p>
+ It might be true to say that this is 'API/implementation separation', but
+ this too could be confusing as the aforementioned SAX is not quite a
+ pure set of interfaces. It has a static factory that thunks in an
+ implementation that all subsequent calls to the factory method will be
+ forced to use. See Anti-Patterns below.
+ </p>
+
+<p>
+ Better might be 'separation of implementation and the interface/contract'
as
+ that is quite correct, but a tad unwieldy.
+ </p>
+
+
+
+<div class="h3">
+<h3>Related Topics</h3>
+</div>
+
+
+<div class="h4">
+<h4>Implementation Hiding</h4>
+</div>
+
+
+<p>
+ Once a tool is split into interface and impl, it is possible for a
container
+ to hide the implementation. Most containers already use dynamic proxys
+ (available in the JDK since 1.3), but we are talking about having the
classes
+ of the implementation hidden from classes using the interface.
+ </p>
+
+<p>
+ To do this, it is easiest to mount the impl classes in a separate
classloader
+ to the classloader that the interface-using classes are mounted in. The
+ interfaces being mounted in a classloader that is visible to both.
+ </p>
+
+<p>
+ This is not a new proposition. Sun defined the servlet spec, and
included
+ rules about implementation hiding for hosted servlets. Essentially,
+ instantiated servlets are only allowed to 'see' classes from the JDK,
their
+ own WAR file and those of the Servlet API itself. Tomcat correctly hides
+ the implementation of the Servlet API from the hosted servlets.
+ </p>
+
+<p>
+ To actually achieve this separation, many containers (including those
from
+ the Avalon project) require that the interface and impl are in separate
jars.
+ Or to put it another way, there is no point separating your interface and
impl
+ classes if you are going to distribute them in the same jar.
+ </p>
+
+
+<div class="h4">
+<h4>Kernel, Client API, Hosted Components</h4>
+</div>
+
+
+<p>
+ This is building on the previous section, and in short is referred to as
K/CAPI/HC.
+ Basically the kernel mounts hosted components and satisfies their need
for a
+ client API. However the kernel wants to hide its implementation from the
hosted
+ components.
+ </p>
+
+<p>
+ An EJB container is another good example of this. EntityBean,
SessionBean etc. is
+ the client API. The hosted components are the beans, and the container
has a
+ kernel. It builds a complex tree of classloaders to separate its
implementation,
+ the client API, the JDK's runtime jar (that always being in the system or
+ primordial classloader), and the hosted components.
+ </p>
+
+<p>
+ The central message of this is that if you have interface/impl separated
your
+ tool, and are doing tricky things with more classloaders in the
implementation,
+ please make sure you do not assume that the parent classloader of any
classloader
+ is the system classloader. If your reusable tool has been taken by
another team
+ and at some non root place in a classloader tree, then the tools will
fail if
+ you have made such assumptions.
+ </p>
+
+
+<div class="h4">
+<h4>Anti-Patterns</h4>
+</div>
+
+
+<p>
+ SAX, mentioned in multiple contexts in this document, is also an example
of
+ where the design can go wrong. The Factory is static (that in itself is
an
+ anti-pattern to IoC). Despite giving the appearance of having the
ability
+ to generate a parser based on the implementation's class name, only the
first
+ caller of that method will register a parser for the whole environment to
use.
+ </p>
+
+<p>
+ Given that the SAX API is now in the JDK, the environment we allude to
above
+ is the whole JVM. This is a problem because in a very complex
application
+ with differing concurrent needs for implementation of parsers, not all
can be
+ met if the SAX API is used for making parsers.
+ </p>
+
+
+
+
+<div id="authors" align="right">by Paul Hammant, Peter Donald</div>
+</div>
+</div>
+</div>
+</td>
+<!--================= end Content ==================-->
+</tr>
+</tbody>
+</table>
+<!--================= end Main ==================-->
+<!--================= start Footer ==================-->
+<div id="footer">
+<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
+<tbody>
+<tr>
+<!--================= start Copyright ==================-->
+<td colspan="2">
+<div align="center">
+<div class="copyright">
+ Copyright © 2003 The Apache Software Foundation.. All
rights reserved.
+ </div>
+</div>
+</td>
+<!--================= end Copyright ==================-->
+</tr>
+<tr>
+<td align="left">
+<!--================= start Host ==================-->
+<!--================= end Host ==================--></td><td align="right">
+<!--================= start Credits ==================-->
+<div align="right">
+<div class="credit"></div>
+</div>
+<!--================= end Credits ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Footer ==================-->
+</body>
+</html>
1.4 +303 -1 avalon-site/site/framework/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/avalon-site/site/framework/index.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- index.html 20 Feb 2003 14:26:08 -0000 1.3
+++ index.html 20 Feb 2003 14:49:32 -0000 1.4
@@ -1 +1,303 @@
-<html><head><title>Resource not Found</title><STYLE><!--H1{font-family :
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family :
sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color :
white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE>
</head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1"
noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> <u>Page Not
Available.</u></p><p><b>description</b> <u>The requested resource couldn't be
found.</u></p><p><b>sender</b> org.apache.cocoon.Main</p><p><b>source</b> Cocoon
commandline
(Main.java)</p><p><b>request-uri</b><pre>framework/index.html</pre></p><p><b>missing-file</b><pre>site\framework\index.html</pre></p><hr
size="1" noshade="true"/></body></html>
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<!--*** This is a generated file. Do not edit. ***-->
+<link rel="stylesheet" href="skin/tigris.css" type="text/css">
+<link rel="stylesheet" href="skin/mysite.css" type="text/css">
+<link rel="stylesheet" href="skin/site.css" type="text/css">
+<link media="print" rel="stylesheet" href="skin/print.css" type="text/css">
+<title>Avalon Framework - Overview</title>
+</head>
+<body bgcolor="white" class="composite">
+<!--================= start Banner ==================-->
+<div id="banner">
+<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
+<tbody>
+<tr>
+<!--================= start Group Logo ==================-->
+<td align="left">
+<div class="groupLogo">
+<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache"
src="images/group-logo.gif"></a>
+</div>
+</td>
+<!--================= end Group Logo ==================-->
+<!--================= start Project Logo ==================--><td align="right">
+<div class="projectLogo">
+<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache
Avalon" src="images/project-logo.gif"></a>
+</div>
+</td>
+<!--================= end Project Logo ==================-->
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Banner ==================-->
+<!--================= start Main ==================-->
+<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav"
id="breadcrumbs">
+<tbody>
+<!--================= start Status ==================-->
+<tr class="status">
+<td>
+<!--================= start BreadCrumb ==================--><a href=""></a><a
href=""></a><a href=""></a>
+<!--================= end BreadCrumb ==================--></td><td id="tabs">
+<!--================= start Tabs ==================-->
+<div class="tab">
+<span class="unselectedTab"><a href="http://avalon.apache.org/">Avalon
Home</a></span> | <span class="selectedTab"><a href="index.html"><font
color="#000000">Framework</font></a></span> | <span class="unselectedTab"><a
href="http://avalon.apache.org/components/">Components</a></span> | <span
class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/seca/">SECA</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
+</div>
+<!--================= end Tabs ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+<!--================= end Status ==================-->
+<table id="main" width="100%" cellpadding="8" cellspacing="0" summary=""
border="0">
+<tbody>
+<tr valign="top">
+<!--================= start Menu ==================-->
+<td id="leftcol">
+<div id="navcolumn">
+<div class="menuBar">
+<div class="menu">
+<span class="menuLabel">Essentials</span>
+
+<div class="menuItem">
+<span class="menuSelected">Overview</span>
+</div>
+
+<div class="menuItem">
+<a href="getting-started.html">Getting Started</a>
+</div>
+
+<div class="menuItem">
+<a href="http://jakarta.apache.org/builds/avalon/release/framework">Download</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Guide</span>
+
+<div class="menuItem">
+<a href="guide-oop-best-practices.html">OOP best Practices</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-what-are.html">What are Patterns?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-what-is.html">What is COP?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-in-avalon.html">COP in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-where-to-go-from-here.html">Where to Go from here</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Reference</span>
+
+<div class="menuItem">
+<a href="changes.html">Changes</a>
+</div>
+
+<div class="menuItem">
+<a href="http://avalon.apache.org/api/index.html">API Docs</a>
+</div>
+
+<div class="menuItem">
+<a href="reference-the-lifecycle.html">The Lifecycle</a>
+</div>
+
+<div class="menuItem">
+<a href="reference-containers.html">Containers</a>
+</div>
+
+</div>
+</div>
+</div>
+</td>
+<!--================= end Menu ==================-->
+<!--================= start Content ==================--><td>
+<div id="bodycol">
+<div class="app">
+<div align="center">
+<h1>Avalon Framework - Overview</h1>
+</div>
+<div class="h3">
+
+
+
+<div class="h3">
+<h3>Introduction</h3>
+</div>
+
+
+<p>
+ The Avalon Framework consists of interfaces
+ that define relationships between commonly used application components,
+ best-of-practice pattern enforcements, and several
+ lightweight convenience implementations of the generic components.
+ </p>
+
+<p>
+ If that sounds a bit abstract to you, we suggest you start by reading
+ the guide (see below). If you want to see the code first, either
+ <a
href="http://jakarta.apache.org/builds/avalon/release/framework">download</a>
+ it or
+ <a href="http://jakarta.apache.org/site/cvsindex.html">get it from CVS</a>.
+ The <a href="getting-started.html">Getting Started</a> document
+ provides more pointers.
+ </p>
+
+
+<div class="h3">
+<h3>Guide to Avalon Framework</h3>
+</div>
+
+
+<p>
+ The Avalon Framework is based on several important programming
+ concepts (design patterns and COP) which are applied throughout
+ Avalon. This documentation first introduces each of these, providing
+ links to external sources for more elaborate documentation. Then,
+ we look at how these concepts are used within Avalon.
+ </p>
+
+<p>
+ This is more a theoretical introduction than a hands-on guide. If you
+ prefer looking at code while learning, try our
+ <a href="http://avalon.apache.org/developing/index.html">Developing with
Avalon</a> paper.
+ </p>
+
+<div class="h4">
+<h4>Target Audience</h4>
+</div>
+
+
+<p>
+ This documentation is aimed towards developers who:
+ </p>
+
+<ul>
+
+<li>are interested in the design principles of Avalon</li>
+
+<li>wish to develop code that will be incorporated into Avalon</li>
+
+<li>wish to reuse Avalon concepts in their own application</li>
+
+</ul>
+
+
+<div class="h4">
+<h4>Contents</h4>
+</div>
+
+
+<ol>
+
+<li>
+
+<a href="guide-oop-best-practices.html">OOP best Practices</a>
+
+</li>
+
+<li>
+
+<a href="guide-patterns-what-are.html">What are Design Patterns?</a>
+
+</li>
+
+<li>
+
+<a href="guide-patterns-in-avalon.html">Design Patterns in Avalon</a>
+
+</li>
+
+<li>
+
+<a href="guide-cop-what-is.html">What is Component-Oriented Programming?</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 next</a>
+
+</li>
+
+</ol>
+
+
+
+<div class="h3">
+<h3>Avalon Framework Reference Documentation</h3>
+</div>
+
+
+<p>
+ Besides the
+ <a href="http://avalon.apache.org/api/index.html">Javadocs</a>, we have
the
+ <a href="reference-the-lifecycle.html">Lifecycle Specification</a> and
the
+ <a href="reference-containers.html">List of Containers</a>.
+ </p>
+
+
+
+<div id="authors" align="right">by Avalon Documentation Team</div>
+</div>
+</div>
+</div>
+</td>
+<!--================= end Content ==================-->
+</tr>
+</tbody>
+</table>
+<!--================= end Main ==================-->
+<!--================= start Footer ==================-->
+<div id="footer">
+<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
+<tbody>
+<tr>
+<!--================= start Copyright ==================-->
+<td colspan="2">
+<div align="center">
+<div class="copyright">
+ Copyright © 2003 The Apache Software Foundation.. All
rights reserved.
+ </div>
+</div>
+</td>
+<!--================= end Copyright ==================-->
+</tr>
+<tr>
+<td align="left">
+<!--================= start Host ==================-->
+<!--================= end Host ==================--></td><td align="right">
+<!--================= start Credits ==================-->
+<div align="right">
+<div class="credit"></div>
+</div>
+<!--================= end Credits ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Footer ==================-->
+</body>
+</html>
1.3 +354 -1 avalon-site/site/framework/reference-containers.html
Index: reference-containers.html
===================================================================
RCS file: /home/cvs/avalon-site/site/framework/reference-containers.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- reference-containers.html 20 Feb 2003 14:26:08 -0000 1.2
+++ reference-containers.html 20 Feb 2003 14:49:32 -0000 1.3
@@ -1 +1,354 @@
-<html><head><title>Resource not Found</title><STYLE><!--H1{font-family :
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family :
sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color :
white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE>
</head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1"
noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> <u>Page Not
Available.</u></p><p><b>description</b> <u>The requested resource couldn't be
found.</u></p><p><b>sender</b> org.apache.cocoon.Main</p><p><b>source</b> Cocoon
commandline
(Main.java)</p><p><b>request-uri</b><pre>framework/reference-containers.html</pre></p><p><b>missing-file</b><pre>site\framework\reference-containers.html</pre></p><hr
size="1" noshade="true"/></body></html>
\ No newline at end of file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<!--*** This is a generated file. Do not edit. ***-->
+<link rel="stylesheet" href="skin/tigris.css" type="text/css">
+<link rel="stylesheet" href="skin/mysite.css" type="text/css">
+<link rel="stylesheet" href="skin/site.css" type="text/css">
+<link media="print" rel="stylesheet" href="skin/print.css" type="text/css">
+<title>Avalon Framework - Containers</title>
+</head>
+<body bgcolor="white" class="composite">
+<!--================= start Banner ==================-->
+<div id="banner">
+<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
+<tbody>
+<tr>
+<!--================= start Group Logo ==================-->
+<td align="left">
+<div class="groupLogo">
+<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache"
src="images/group-logo.gif"></a>
+</div>
+</td>
+<!--================= end Group Logo ==================-->
+<!--================= start Project Logo ==================--><td align="right">
+<div class="projectLogo">
+<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache
Avalon" src="images/project-logo.gif"></a>
+</div>
+</td>
+<!--================= end Project Logo ==================-->
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Banner ==================-->
+<!--================= start Main ==================-->
+<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav"
id="breadcrumbs">
+<tbody>
+<!--================= start Status ==================-->
+<tr class="status">
+<td>
+<!--================= start BreadCrumb ==================--><a href=""></a><a
href=""></a><a href=""></a>
+<!--================= end BreadCrumb ==================--></td><td id="tabs">
+<!--================= start Tabs ==================-->
+<div class="tab">
+<span class="unselectedTab"><a href="http://avalon.apache.org/">Avalon
Home</a></span> | <span class="selectedTab"><a href="index.html"><font
color="#000000">Framework</font></a></span> | <span class="unselectedTab"><a
href="http://avalon.apache.org/components/">Components</a></span> | <span
class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/seca/">SECA</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
+</div>
+<!--================= end Tabs ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+<!--================= end Status ==================-->
+<table id="main" width="100%" cellpadding="8" cellspacing="0" summary=""
border="0">
+<tbody>
+<tr valign="top">
+<!--================= start Menu ==================-->
+<td id="leftcol">
+<div id="navcolumn">
+<div class="menuBar">
+<div class="menu">
+<span class="menuLabel">Essentials</span>
+
+<div class="menuItem">
+<a href="index.html">Overview</a>
+</div>
+
+<div class="menuItem">
+<a href="getting-started.html">Getting Started</a>
+</div>
+
+<div class="menuItem">
+<a href="http://jakarta.apache.org/builds/avalon/release/framework">Download</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Guide</span>
+
+<div class="menuItem">
+<a href="guide-oop-best-practices.html">OOP best Practices</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-what-are.html">What are Patterns?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-what-is.html">What is COP?</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-cop-in-avalon.html">COP in Avalon</a>
+</div>
+
+<div class="menuItem">
+<a href="guide-where-to-go-from-here.html">Where to Go from here</a>
+</div>
+
+</div>
+<div class="menu">
+<span class="menuLabel">Reference</span>
+
+<div class="menuItem">
+<a href="changes.html">Changes</a>
+</div>
+
+<div class="menuItem">
+<a href="http://avalon.apache.org/api/index.html">API Docs</a>
+</div>
+
+<div class="menuItem">
+<a href="reference-the-lifecycle.html">The Lifecycle</a>
+</div>
+
+<div class="menuItem">
+<span class="menuSelected">Containers</span>
+</div>
+
+</div>
+</div>
+</div>
+</td>
+<!--================= end Menu ==================-->
+<!--================= start Content ==================--><td>
+<div id="bodycol">
+<div class="app">
+<div align="center">
+<h1>Avalon Framework - Containers</h1>
+</div>
+<div class="h3">
+
+
+
+<div class="h3">
+<h3>Introduction</h3>
+</div>
+
+
+<p>
+ There are various containers that are aware of the Avalon Framework
interfaces.
+ This is a sort-of comprehensive list.
+ </p>
+
+
+<div class="h3">
+<h3>Standalone Containers</h3>
+</div>
+
+
+<p>
+ These typically run from the command line and are launched via a legacy
main() method.
+ </p>
+
+<div class="h4">
+<h4>Avalon Phoenix</h4>
+</div>
+
+
+<p>
+ This is a sister project to Avalon Framework. It provides an environment
+ for launching multiple, isolated, more or less unrestricted server
applications
+ as hosted components. These can be applications like a web server, RDBMS or
+ EJB server. It provides many advanced features like automatic management, at
the
+ cost of a bit of complexity.
+ See <a href="http://avalon.apache.org/phoenix/index.html">Phoenix</a>.
+ </p>
+
+
+<p>
+ Phoenix is the oldest of the Avalon Containers; it is probably the most
powerful
+ and most widely used. While still in alpha, this hints at the fact that we
find it
+ to be not completely future complete, rather than an infantile project.
+ </p>
+
+
+
+<div class="h4">
+<h4>Avalon Excalibur's Tweety</h4>
+</div>
+
+
+<p>
+ Tweety is almost the opposite of Phoenix. It is a recent development and
written
+ exclusively as a teaching tool. It has no features whatsoever besides basic
support
+ for the Avalon lifecycle. This results in a complete distribution the size of
the
+ Phoenix bootstrapper.
+ See <a href="http://avalon.apache.org/excalibur/tweety">Tweety</a>
+
+</p>
+
+
+
+<div class="h4">
+<h4>Myrmidon</h4>
+</div>
+
+
+<p>
+ Myrmidon is a proposal for the kernel of
+ <a href="http://jakarta.apache.org/ant">Apache Ant</a> 2.
+ See <a
href="http://cvs.apache.org/viewcvs.cgi/jakarta-ant/proposal/myrmidon/">Myrmidon</a>
+
+</p>
+
+
+
+<div class="h3">
+<h3>Embedded Containers</h3>
+</div>
+
+
+<p>
+ These run inside another application (like a servlet engine) and are
controlled by it.
+ </p>
+
+<div class="h4">
+<h4>Excalibur Component Manager</h4>
+</div>
+
+
+<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. ECM is the most stable of the containers (it is
the
+ only one with a stable release); it is also arguably the worst design.
+ See <a href="http://avalon.apache.org/excalibur/component/">ECM</a>.
+ </p>
+
+
+<div class="h4">
+<h4>Fortress</h4>
+</div>
+
+
+<p>
+ Fortress is meant as a future replacement of ECM. It fixes several of
ECMs flaws
+ like a mixup of concerns. It is built to be very extensible, and it includes
+ support for custom lifecycle extensions. Fortress is still pre-alpha.
+ See <a href="http://avalon.apache.org/excalibur/fortress/">Fortress</a>.
+ </p>
+
+
+<div class="h4">
+<h4>Merlin</h4>
+</div>
+
+
+<p>
+ Another recent development is Merlin, which has a client API very similar
to
+ Phoenix (applications that can run within phoenix can run within merlin as
+ well). Merlin is still pre-alpha.
+ </p>
+
+<p>
+ See <a href="http://home.osm.net/doc/merlin/index.html">Merlin</a>.
+ </p>
+
+
+<div class="h4">
+<h4>Plexus</h4>
+</div>
+
+
+<p>
+ Plexus is a container under development that will become the basis of the
+ services framework for a sister project to Avalon,
+ <a href="http://jakarta.apache.org/turbine">Turbine</a>.
+ </p>
+
+<p>
+ See <a
href="http://tambora.zenplex.org/cgi-bin/cvsweb.cgi/plexus/">Plexus</a>.
+ </p>
+
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+ Plexus is being developed outside of Avalon itself as an external project.
+ </div>
+</div>
+
+
+<div class="h4">
+<h4>Enterprise Object Broker (EOB)</h4>
+</div>
+
+
+<p>
+ The reference implementation of this 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.
+ </p>
+
+<p>
+ See <a href="http://eob.sourceforge.net/">EOB</a>.
+ </p>
+
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+ EOB is an being developed outside of Avalon itself as an external project.
+ </div>
+</div>
+
+
+
+
+<div id="authors" align="right">by Paul Hammant, Leo Simons</div>
+</div>
+</div>
+</div>
+</td>
+<!--================= end Content ==================-->
+</tr>
+</tbody>
+</table>
+<!--================= end Main ==================-->
+<!--================= start Footer ==================-->
+<div id="footer">
+<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
+<tbody>
+<tr>
+<!--================= start Copyright ==================-->
+<td colspan="2">
+<div align="center">
+<div class="copyright">
+ Copyright © 2003 The Apache Software Foundation.. All
rights reserved.
+ </div>
+</div>
+</td>
+<!--================= end Copyright ==================-->
+</tr>
+<tr>
+<td align="left">
+<!--================= start Host ==================-->
+<!--================= end Host ==================--></td><td align="right">
+<!--================= start Credits ==================-->
+<div align="right">
+<div class="credit"></div>
+</div>
+<!--================= end Credits ==================-->
+</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!--================= end Footer ==================-->
+</body>
+</html>
1.1 avalon-site/site/framework/changes.html
Index: changes.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!--*** This is a generated file. Do not edit. ***-->
<link rel="stylesheet" href="skin/tigris.css" type="text/css">
<link rel="stylesheet" href="skin/mysite.css" type="text/css">
<link rel="stylesheet" href="skin/site.css" type="text/css">
<link media="print" rel="stylesheet" href="skin/print.css" type="text/css">
<title>History of Changes</title>
</head>
<body bgcolor="white" class="composite">
<!--================= start Banner ==================-->
<div id="banner">
<table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
<tbody>
<tr>
<!--================= start Group Logo ==================-->
<td align="left">
<div class="groupLogo">
<a href="http://www.apache.org/"><img border="0" class="logoImage" alt="Apache"
src="images/group-logo.gif"></a>
</div>
</td>
<!--================= end Group Logo ==================-->
<!--================= start Project Logo ==================--><td align="right">
<div class="projectLogo">
<a href="http://avalon.apache.org/"><img border="0" class="logoImage" alt="Apache
Avalon" src="images/project-logo.gif"></a>
</div>
</td>
<!--================= end Project Logo ==================-->
</tr>
</tbody>
</table>
</div>
<!--================= end Banner ==================-->
<!--================= start Main ==================-->
<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav"
id="breadcrumbs">
<tbody>
<!--================= start Status ==================-->
<tr class="status">
<td>
<!--================= start BreadCrumb ==================--><a href=""></a><a
href=""></a><a href=""></a>
<!--================= end BreadCrumb ==================--></td><td id="tabs">
<!--================= start Tabs ==================-->
<div class="tab">
<span class="unselectedTab"><a href="http://avalon.apache.org/">Avalon
Home</a></span> | <span class="selectedTab"><a href="index.html"><font
color="#000000">Framework</font></a></span> | <span class="unselectedTab"><a
href="http://avalon.apache.org/components/">Components</a></span> | <span
class="unselectedTab"><a href="http://avalon.apache.org/phoenix/">Phoenix</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/seca/">SECA</a></span> |
<span class="unselectedTab"><a href="http://avalon.apache.org/apps/">Apps</a></span>
</div>
<!--================= end Tabs ==================-->
</td>
</tr>
</tbody>
</table>
<!--================= end Status ==================-->
<table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0">
<tbody>
<tr valign="top">
<!--================= start Menu ==================-->
<td id="leftcol">
<div id="navcolumn">
<div class="menuBar">
<div class="menu">
<span class="menuLabel">Essentials</span>
<div class="menuItem">
<a href="index.html">Overview</a>
</div>
<div class="menuItem">
<a href="getting-started.html">Getting Started</a>
</div>
<div class="menuItem">
<a href="http://jakarta.apache.org/builds/avalon/release/framework">Download</a>
</div>
</div>
<div class="menu">
<span class="menuLabel">Guide</span>
<div class="menuItem">
<a href="guide-oop-best-practices.html">OOP best Practices</a>
</div>
<div class="menuItem">
<a href="guide-patterns-what-are.html">What are Patterns?</a>
</div>
<div class="menuItem">
<a href="guide-patterns-in-avalon.html">Patterns in Avalon</a>
</div>
<div class="menuItem">
<a href="guide-cop-what-is.html">What is COP?</a>
</div>
<div class="menuItem">
<a href="guide-cop-in-avalon.html">COP in Avalon</a>
</div>
<div class="menuItem">
<a href="guide-where-to-go-from-here.html">Where to Go from here</a>
</div>
</div>
<div class="menu">
<span class="menuLabel">Reference</span>
<div class="menuItem">
<span class="menuSelected">Changes</span>
</div>
<div class="menuItem">
<a href="http://avalon.apache.org/api/index.html">API Docs</a>
</div>
<div class="menuItem">
<a href="reference-the-lifecycle.html">The Lifecycle</a>
</div>
<div class="menuItem">
<a href="reference-containers.html">Containers</a>
</div>
</div>
</div>
</div>
</td>
<!--================= end Menu ==================-->
<!--================= start Content ==================--><td>
<div id="bodycol">
<div class="app">
<div align="center">
<h1>History of Changes</h1>
</div>
<div class="h3">
<p>
<a href="changes.rss.xml"><img alt="RSS" src="images/rss.png"></a>
</p>
<devs>
<person name="Federico Barbieri" email="[EMAIL PROTECTED]">
<a name="FB"></a>
</person>
<person name="Berin Loritsch" email="[EMAIL PROTECTED]">
<a name="BL"></a>
</person>
<person name="Peter Donald" email="[EMAIL PROTECTED]">
<a name="PD"></a>
</person>
<person name="Jeff Turner" email="[EMAIL PROTECTED]">
<a name="JT"></a>
</person>
<person name="Paul Hammant" email="[EMAIL PROTECTED]">
<a name="PH"></a>
</person>
<person name="Leif Mortenson" email="[EMAIL PROTECTED]">
<a name="LM"></a>
</person>
<person name="Carston Ziegeler" email="[EMAIL PROTECTED]">
<a name="CZ"></a>
</person>
</devs>
<div class="h3">
<h3>Version 4.1.4 (current)</h3>
</div>
<ul>
<li>
<img alt="remove" src="images/remove.jpg">
Remove the hard deprecation on the o.a.a.f.component package. It
has been replaced by a softer form of deprecation (i.e. just notes
in JavaDocs that do not affect the compile).
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
New ContainerUtil available to make creating components easier.
(PD)</li>
</ul>
<div class="h3">
<h3>Version 4.1.3 (July 30, 2002)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Undocumented release. Not sure who, what, when, where, why or how.
(BL)</li>
</ul>
<div class="h3">
<h3>Version 4.1.2 (January 31, 2002)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Updated the build jars.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Add EMPTY_PARAMETERS constant object to the Parameters object.
(CZ)</li>
<li>
<img alt="update" src="images/update.jpg">
Made it configurable whether you print nested exceptions or not,
and specify the depth that the AvalonFormatter will go with nested
exceptions (defaults to 8).
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Update build to have a "compress.jars" property (defaults to
true by default).
(LM)</li>
</ul>
<div class="h3">
<h3>Version 4.1.1 (December 21, 2001)</h3>
</div>
<ul>
<li>
<img alt="fix" src="images/fix.jpg">
Force build process to produce JDK 1.2 compliant class files.
The last release had JDK 1.4 compliant class files, causing
some classloaders to not work with the Framework.
(BL)</li>
</ul>
<div class="h3">
<h3>Version 4.1 (December 12, 2001)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Improve and update the configuration javadocs to reflect the new
namespace support.
(JT)</li>
<li>
<img alt="remove" src="images/remove.jpg">
Deprecate the Loggable and AbstractLoggable classes, and replace
them with LogEnabled and AbstractLogEnabled.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Add an abstraction layer to the Logging implementation. Thanks
to Peter Donald for supplying the interface.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Add Namespace support to Configuration files.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Add AvalonFormatter that was in LogKit's heirarchy. This way, we
avoid circular dependancies.
(BL)</li>
<li>
<img alt="fix" src="images/fix.jpg">
Previously resolve did not throw a ContextException. This made it
difficult to indicate errors resolving objects. It now throws an
exception thus allowing errors to be propogated and recorded.
(PD)</li>
<li>
<img alt="add" src="images/add.jpg">
New ConfigurationSerializer to have your configuration objects persist.
(BL)</li>
<li>
<img alt="update" src="images/update.jpg">
Upgrade DefaultConfigurationBuilder to be JAXP compliant,
with the option to pass in your own XMLReader.
(BL)</li>
<li>
<img alt="update" src="images/update.jpg">
Configuration objects are now Serializable.
(PD)</li>
<li>
<img alt="add" src="images/add.jpg">
Add new support to ask a component manager if it has a component.
(BL)</li>
<li>
<img alt="fix" src="images/fix.jpg">
Bug fixes for documentation
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Update developers docs to support new configuration methods.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Improved "Hello World" documentation.
(PH)</li>
<li>
<img alt="add" src="images/add.jpg">
Add UML diagrams supplied by Dieter Wimberger
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Add new author bios.
(BL)</li>
<li>
<img alt="update" src="images/update.jpg">
Update build process to proposed standard.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Added a method to Version to parse a Version from a string. Added accessor
methods to Version to allow access to major/minor/micro components of
version.
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Updated Version class to refer to micro version rather than revision. This
is to match the terminology for JDK versioning. This is just documentation
changes.
(PD)</li>
<li>
<img alt="fix" src="images/fix.jpg">
Changed access of Enum and ValuedEnum constructors from public to
protected, to prevent Enum users from breaking type-safety by adding new
Enum items. This breaks backwards-compatibility in cases where Enum
and ValuedEnum were being incorrectly used.
(JT)</li>
</ul>
<div class="h3">
<h3>Version 4.0 (July 30, 2001)</h3>
</div>
<ul>
<li>
<img alt="add" src="images/add.jpg">
Added new method to Component Manager and Selector for discovering
if a Component exists inside or not. Also augmented the default
versions with the basic implementation to discover them.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Added stylesheet to convert Stylebook markup to DocBook markup.
(BL)</li>
<li>
<img alt="update" src="images/update.jpg">
Changed the documentation build process to use Cocoon to build
the site.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Added new "Developing with Avalon" book in DocBook format.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Added Executable interface to activity package.
(PD)</li>
<li>
<img alt="fix" src="images/fix.jpg">
Updated Resolvable interface to allow a ContextException to be thrown
on failure.
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Add a makeReadOnly() method to the default implementations of Configuration,
Context and ComponentManager. Calling this method after the respective
object has been filled will make the object read-only. This is a safety
precaution to stop code performing unwanted operations.
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Updated the javadocs of many of the classes.
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Update documentation so that it is more accurate and descriptive.
(BL)</li>
</ul>
<div class="h3">
<h3>Version 4.0b3 (June 6, 2001)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Release 4.0b3
(BL)</li>
<li>
<img alt="fix" src="images/fix.jpg">
Made DefaultComponentManager/Selector, DefaultContext, and
DefaultConfiguration read-only to avoid bad programming
practices by clients.
(PD)</li>
</ul>
<div class="h3">
<h3>Version 4.0b2 (June 4, 2001)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Release 4.0b2
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Add makeReadOnly() method to default implementations to prevent
alteration after they are set up.
(PD)</li>
<li>
<img alt="update" src="images/update.jpg">
Removed the "throws Exception" from Disposable interface. That was
inadvertently left in the previous release.
(BL)</li>
<li>
<img alt="add" src="images/add.jpg">
Added extra methods to Parameters to throw exceptions if the value
does not exist. They are the "no default value" methods.
(BL)</li>
<li>
<img alt="update" src="images/update.jpg">
Updated javadocs for Framework.
(PD)</li>
</ul>
<div class="h3">
<h3>Version 4.0b1 (May 11, 2001)</h3>
</div>
<ul>
<li>
<img alt="update" src="images/update.jpg">
Official release
(BL)</li>
</ul>
</div>
</div>
</div>
</td>
<!--================= end Content ==================-->
</tr>
</tbody>
</table>
<!--================= end Main ==================-->
<!--================= start Footer ==================-->
<div id="footer">
<table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
<tbody>
<tr>
<!--================= start Copyright ==================-->
<td colspan="2">
<div align="center">
<div class="copyright">
Copyright © 2003 The Apache Software Foundation.. All rights
reserved.
</div>
</div>
</td>
<!--================= end Copyright ==================-->
</tr>
<tr>
<td align="left">
<!--================= start Host ==================-->
<!--================= end Host ==================--></td><td align="right">
<!--================= start Credits ==================-->
<div align="right">
<div class="credit"></div>
</div>
<!--================= end Credits ==================-->
</td>
</tr>
</tbody>
</table>
</div>
<!--================= end Footer ==================-->
</body>
</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]