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]