You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@excalibur.apache.org by rd...@apache.org on 2009/06/16 19:55:28 UTC

svn commit: r785324 [5/28] - in /excalibur/site: ./ css/ developing/ event/ fortress/ framework/ images/logos/ instrument/ lifecycle/ sourceresolve/ store/ xmlutil/

Modified: excalibur/site/developing/conclusion.html
URL: http://svn.apache.org/viewvc/excalibur/site/developing/conclusion.html?rev=785324&r1=785323&r2=785324&view=diff
==============================================================================
--- excalibur/site/developing/conclusion.html (original)
+++ excalibur/site/developing/conclusion.html Tue Jun 16 17:55:25 2009
@@ -1,31 +1,453 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Apache Excalibur - Conclusion</title><style type="text/css" media="all">
-          @import url("../style/maven-base.css");
-          
-			    @import url("../style/maven-theme.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta><meta name="author" content="Paul Hammant"></meta><meta name="email" content="hammant@apache.org"></meta><meta name="author" content="Berin Loritsch"></meta><meta name="email" content="bloritsch@apache.org"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="The Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://excalibur.apache.org/" id="projectLogo"><img alt="Apache Excalibur" src="http://excalibur.apache.org/logo.gif"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xright">
-        
-        <a href="../index.html">Home</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../fortress/index.html">Fortress</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../component-list.html">Components</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../containerkit.html">Containerkit</a>
-      </div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuEssentials"><h5>Essentials</h5><ul><li class="none"><a href="../index.html">Overview</a></li><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li><li class="none"><a href="../svn.html">Subversion</a></li><li class="none"><a href="http://wiki.apache.org/excalibur/" class="externalLink" title="External Link">Wiki</a></li><li class="none"><a href="http://wiki.apache.org/excalibur/FrequentlyAskedQuestions" class="externalLink" title="External Link">FAQ</a></li><li class="none"><a href="http://excalibur.apache.org/apidocs/" class="externalLink" title="External Link">Javadocs</a></li><li class="none"><a href="http://excalibur.apache.org/download.cgi" class="externalLink" title="External Link">Download</a></li><li class="none"><a href="../issue-tracking.html">Issue Tracking</a></li><li class="collapsed"><a href="../misc.html">Miscellaneous</a></li></ul></div><div
  id="menuFortress"><h5>Fortress</h5><ul><li class="none"><a href="../fortress/index.html">Overview</a></li><li class="none"><a href="../fortress/features.html">Features Oriented</a></li><li class="none"><a href="../fortress/getting-started.html">Getting Started</a></li><li class="none"><a href="../fortress/using-meta-info.html">Using Meta Info</a></li><li class="none"><a href="../fortress/cli.html">CLI</a></li><li class="none"><a href="../fortress/swing.html">Swing</a></li><li class="none"><a href="../fortress/servlet.html">Servlet</a></li><li class="none"><a href="../lifecycle/index.html">Lifecycle Extensions</a></li><li class="none"><a href="../fortress/design-notes.html">Design Notes</a></li></ul></div><div id="menuFramework"><h5>Framework</h5><ul><li class="collapsed"><a href="../framework/index.html">Documentation</a></li><li class="expanded"><a href="../developing/index.html">Developing</a><ul><li class="none"><a href="../developing/authors.html">Authors</a></li><li cl
 ass="none"><a href="../developing/introduction.html">Introduction</a></li><li class="none"><a href="../developing/decomposing.html">Decomposition</a></li><li class="none"><a href="../developing/framework.html">Avalon Framework</a></li><li class="none"><a href="../developing/implementing.html">Using the framework</a></li><li class="none"><a href="../developing/compatiblity.html">Compatibility with Avalon</a></li><li class="none"><a href="../developing/strategies.html">Development Strategies</a></li><li class="none"><strong><a href="../developing/conclusion.html">Conclusion</a></strong></li></ul></li></ul></div><div id="menuComponents"><h5>Components</h5><ul><li class="none"><a href="../component-list.html">Overview</a></li><li class="collapsed"><a href="../sourceresolve/index.html">Sourceresolver</a></li><li class="collapsed"><a href="../store/index.html">Store</a></li><li class="none"><a href="../thread.html">Thread</a></li><li class="collapsed"><a href="../xmlutil/index.htm
 l">XMLUtil</a></li></ul></div><div id="menuContainerkit"><h5>Containerkit</h5><ul><li class="none"><a href="../containerkit.html">Overview</a></li><li class="collapsed"><a href="../instrument/index.html">Instrument</a></li><li class="collapsed"><a href="../lifecycle/index.html">Lifecycle</a></li><li class="none"><a href="../logger.html">Logger</a></li></ul></div><div id="menuDeprecated_Materials"><h5>Deprecated Materials</h5><ul><li class="none"><a href="../deprecation.html">Overview</a></li><li class="expanded"><a href="../deprecation.html">Old Documentation</a><ul><li class="none"><a href="../component.html">ECM</a></li><li class="collapsed"><a href="../event/index.html">Event</a></li><li class="none"><a href="../configuration.html">Configuration</a></li></ul></li></ul></div><div id="menuThanks"><h5>Thanks</h5><ul><li class="none"><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="External Link">to our sponsors!</a></li><li class="none"><a h
 ref="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="External Link">Sponsor the ASF</a></li></ul></div><div id="menuProject_Documentation"><h5>Project Documentation</h5><ul><li class="none"><a href="../index.html">About Apache Excalibur</a></li><li class="collapsed"><a href="../project-info.html">Project Info</a></li><li class="collapsed"><a href="../maven-reports.html">Project Reports</a></li><li class="none"><a href="http://maven.apache.org/development-process.html" class="externalLink" title="External Link">Development Process</a></li></ul></div></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Conclusion"></a><h2>Conclusion</h2><p>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Excalibur - Conclusion</title>
+    <style type="text/css" media="all">
+      @import url("../css/maven-base.css");
+      @import url("../css/maven-theme.css");
+      @import url("../css/site.css");
+    </style>
+    <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
+          <meta name="author" content="Paul Hammant" />
+          <meta name="author" content="Berin Loritsch" />
+          </head>
+  <body class="composite">
+    <div id="banner">
+                    <span id="bannerLeft">
+    
+            Excalibur
+    
+            </span>
+                    <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+          
+  
+
+  
+    
+  
+  
+    
+            <div class="xleft">
+        Last Published: 2009-06-16
+                      </div>
+            <div class="xright">            <a href="../index.html">Home</a>
+            |
+                <a href="../fortress/index.html">Fortress</a>
+            |
+                <a href="../component-list.html">Components</a>
+            |
+                <a href="../containerkit.html">Containerkit</a>
+            
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+           
+  
+
+  
+    
+  
+  
+    
+                   <h5>Essentials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../index.html">Overview</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../mail-lists.html">Mailing Lists</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../svn.html">Subversion</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://wiki.apache.org/excalibur/" class="externalLink">Wiki</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://wiki.apache.org/excalibur/FrequentlyAskedQuestions" class="externalLink">FAQ</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://excalibur.apache.org/apidocs/" class="externalLink">Javadocs</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://excalibur.apache.org/download.cgi" class="externalLink">Download</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../issue-tracking.html">Issue Tracking</a>
+          </li>
+              
+                
+              
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../misc.html">Miscellaneous</a>
+                </li>
+          </ul>
+              <h5>Fortress</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../fortress/index.html">Overview</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/features.html">Features Oriented</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/getting-started.html">Getting Started</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/using-meta-info.html">Using Meta Info</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/cli.html">CLI</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/swing.html">Swing</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/servlet.html">Servlet</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../lifecycle/index.html">Lifecycle Extensions</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/design-notes.html">Design Notes</a>
+          </li>
+          </ul>
+              <h5>Framework</h5>
+            <ul>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../framework/index.html">Documentation</a>
+                </li>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+            
+              
+            <li class="expanded">
+                    <a href="../developing/index.html">Developing</a>
+                  <ul>
+                  
+    <li class="none">
+                    <a href="../developing/authors.html">Authors</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/introduction.html">Introduction</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/decomposing.html">Decomposition</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/framework.html">Avalon Framework</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/implementing.html">Using the framework</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/compatiblity.html">Compatibility with Avalon</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/strategies.html">Development Strategies</a>
+          </li>
+                  
+    <li class="none">
+              <strong>Conclusion</strong>
+        </li>
+              </ul>
+        </li>
+          </ul>
+              <h5>Components</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../component-list.html">Overview</a>
+          </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../sourceresolve/index.html">Sourceresolver</a>
+                </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../store/index.html">Store</a>
+                </li>
+              
+    <li class="none">
+                    <a href="../thread.html">Thread</a>
+          </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../xmlutil/index.html">XMLUtil</a>
+                </li>
+          </ul>
+              <h5>Containerkit</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../containerkit.html">Overview</a>
+          </li>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../instrument/index.html">Instrument</a>
+                </li>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../lifecycle/index.html">Lifecycle</a>
+                </li>
+              
+    <li class="none">
+                    <a href="../logger.html">Logger</a>
+          </li>
+          </ul>
+              <h5>Deprecated Materials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../deprecation.html">Overview</a>
+          </li>
+              
+          
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+                  
+      
+              
+        <li class="expanded">
+                    <a href="../deprecation.html">Old Documentation</a>
+                  <ul>
+                  
+    <li class="none">
+                    <a href="../component.html">ECM</a>
+          </li>
+                  
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../event/index.html">Event</a>
+                </li>
+                  
+    <li class="none">
+                    <a href="../configuration.html">Configuration</a>
+          </li>
+              </ul>
+        </li>
+          </ul>
+              <h5>Thanks</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../../foundation/thanks.html">to our sponsors!</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../../foundation/sponsorship.html">Sponsor the ASF</a>
+          </li>
+          </ul>
+                                           <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+            <img alt="Built by Maven" src="../images/logos/maven-feather.png"></img>
+          </a>
+                       
+  
+
+  
+    
+  
+  
+    
+        </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+        <div class="section"><h2><a name="Conclusion"></a>Conclusion</h2>
+<p>
     Maybe you are already convinced, but need some help convincing
     your colleagues that Avalon is right for you.  Maybe you need
     some convincing yourself.  Either way, this chapter will help
@@ -34,12 +456,15 @@
     Open Source model.  For arguments on the validity of Open Source,
     I will direct you to Eric S. Raymond's excellent treatises on the
     subject (
-      <a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/" class="externalLink" title="External Link">http://www.tuxedo.org/~esr/writings/cathedral-bazaar/</a> ).
+      <a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/" class="externalLink">http://www.tuxedo.org/~esr/writings/cathedral-bazaar/</a> ).
     Regardless of your opinions on his politics, the
     papers he wrote and compiled into the book <em>The Cathedral
     and the Bazaar</em> will give you the information you need to
     be convinced about the open source model as a whole.
-  </p></div><div class="section"><a name="Avalon_Works"></a><h2>Avalon Works</h2><p>
+  </p>
+</div>
+<div class="section"><h2><a name="Avalon_Works"></a>Avalon Works</h2>
+<p>
       The bottom line is that Avalon accomplishes the goal it was
       originally designed to fulfill.  Avalon does not introduce new
       concepts and ideas, but rather uses and formalizes several concepts
@@ -47,12 +472,16 @@
       the design of Avalon is the Separation of Concerns pattern introduced
       sometime around 1995.  Even then, Separation of Concerns is a
       formalization of System Analysis techniques.
-    </p><p>
+    </p>
+<p>
       Avalon's user base is measured in the hundreds.  Several projects
       like Apache Cocoon, Apache JAMES, and Jesktop are all built on Avalon.
       Developers for those projects are users of Avalon Framework.  Because of
       the number of users Avalon has, it is very well tested.
-    </p><div class="subsection"><a name="Designed_by_the_Best_Minds"></a><h3>Designed by the Best Minds</h3><p>
+    </p>
+<div class="section"><h3><a name="Designed_by_the_Best_Minds"></a>Designed by the Best Minds</h3>
+3
+      <p>
         The authors of Avalon recognize that we are not the sole experts
         on server side programming.  We use concepts and ideas from other
         people's research.  We respond to feedback from our users.  Avalon
@@ -60,7 +489,8 @@
         introduction -- the people who came up with the concepts of Inversion
         of Control, Separation of Concerns, and Component Oriented
         Programming designed it.
-      </p><p>
+      </p>
+<p>
         The beauty of Open Source projects is that the result is an
         amalgamation of the best ideas and the best code.  Avalon has gone
         through periods of testing ideas and rejecting them because there
@@ -69,7 +499,10 @@
         predefined components in Excalibur and use them in your own
         projects -- they have been tested to work under heavy load without
         errors.
-      </p></div><div class="subsection"><a name="Compatible_License"></a><h3>Compatible License</h3><p>
+      </p>
+</div>
+<div class="section"><h3><a name="Compatible_License"></a>Compatible License</h3>
+<p>
         The <em>Apache Software License</em> (ASL) is compatible
         with just about every other license known.  The biggest known
         exceptions are the <em>GNU Public License</em> (GPL)
@@ -78,7 +511,10 @@
         and does not force you to release your source code if you don't want
         to.  It is the same license used for the Apache Software Foundation's
         venerable HTTP server.
-      </p></div><div class="subsection"><a name="Pooled_Research"></a><h3>Pooled Research</h3><p>
+      </p>
+</div>
+<div class="section"><h3><a name="Pooled_Research"></a>Pooled Research</h3>
+<p>
         Most of Avalon's users contribute back to the project in some way.
         This spreads the cost of developing, debugging, and documenting the
         framework across several users.  It also means that Avalon's code
@@ -88,19 +524,54 @@
         a help desk or telephone support line, we do have a mailing list.
         Many times your questions can be answered in less time on the list
         than it would take on some support lines.
-      </p></div><div class="subsection"><a name="Simplified_Analysis_and_Design"></a><h3>Simplified Analysis and Design</h3><p>
+      </p>
+</div>
+<div class="section"><h3><a name="Simplified_Analysis_and_Design"></a>Simplified Analysis and Design</h3>
+<p>
         Developing on Avalon helps the developer to get into a mindset.
         That mindset focuses the efforts on how to discover Components and
         Services.  Since many of the details regarding the life of the
         Components and Services in the system are already analyzed and
         designed, the developer only has to choose which ones they need.
-      </p><p>
+      </p>
+<p>
         It is important to state that Avalon development does not replace
         traditional Object Oriented Analysis and Design, but enhances it.
         You are still using the same techniques you did before, only now
         you have a tool set you can use to achieve your design faster.
-      </p></div></div><div class="section"><a name="Avalon_is_Ready"></a><h2>Avalon is Ready</h2><p>
+      </p>
+</div>
+</div>
+<div class="section"><h2><a name="Avalon_is_Ready"></a>Avalon is Ready</h2>
+<p>
       Avalon Framework, Avalon Excalibur, Avalon Phoenix and Avalon LogKit
       are ready for you to use now.  They are mature, powerful products and
       they are only getting better!
-    </p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 1997-2007, The Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
+    </p>
+</div>
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">&#169;  
+          2009
+    
+          The Apache Software Foundation
+          
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+  </body>
+</html>

Modified: excalibur/site/developing/decomposing.html
URL: http://svn.apache.org/viewvc/excalibur/site/developing/decomposing.html?rev=785324&r1=785323&r2=785324&view=diff
==============================================================================
--- excalibur/site/developing/decomposing.html (original)
+++ excalibur/site/developing/decomposing.html Tue Jun 16 17:55:25 2009
@@ -1,74 +1,517 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Apache Excalibur - Decomposing A System</title><style type="text/css" media="all">
-          @import url("../style/maven-base.css");
-          
-			    @import url("../style/maven-theme.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta><meta name="author" content="Paul Hammant"></meta><meta name="email" content="hammant@apache.org"></meta><meta name="author" content="Berin Loritsch"></meta><meta name="email" content="bloritsch@apache.org"></meta></head><body class="composite"><div id="banner"><a href="http://www.apache.org/" id="organizationLogo"><img alt="The Apache Software Foundation" src="http://www.apache.org/images/asf-logo.gif"></img></a><a href="http://excalibur.apache.org/" id="projectLogo"><img alt="Apache Excalibur" src="http://excalibur.apache.org/logo.gif"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xright">
-        
-        <a href="../index.html">Home</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../fortress/index.html">Fortress</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../component-list.html">Components</a>
-      
-        
-          
-            <span class="separator">|</span>
-          
-        
-        <a href="../containerkit.html">Containerkit</a>
-      </div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuEssentials"><h5>Essentials</h5><ul><li class="none"><a href="../index.html">Overview</a></li><li class="none"><a href="../mail-lists.html">Mailing Lists</a></li><li class="none"><a href="../svn.html">Subversion</a></li><li class="none"><a href="http://wiki.apache.org/excalibur/" class="externalLink" title="External Link">Wiki</a></li><li class="none"><a href="http://wiki.apache.org/excalibur/FrequentlyAskedQuestions" class="externalLink" title="External Link">FAQ</a></li><li class="none"><a href="http://excalibur.apache.org/apidocs/" class="externalLink" title="External Link">Javadocs</a></li><li class="none"><a href="http://excalibur.apache.org/download.cgi" class="externalLink" title="External Link">Download</a></li><li class="none"><a href="../issue-tracking.html">Issue Tracking</a></li><li class="collapsed"><a href="../misc.html">Miscellaneous</a></li></ul></div><div
  id="menuFortress"><h5>Fortress</h5><ul><li class="none"><a href="../fortress/index.html">Overview</a></li><li class="none"><a href="../fortress/features.html">Features Oriented</a></li><li class="none"><a href="../fortress/getting-started.html">Getting Started</a></li><li class="none"><a href="../fortress/using-meta-info.html">Using Meta Info</a></li><li class="none"><a href="../fortress/cli.html">CLI</a></li><li class="none"><a href="../fortress/swing.html">Swing</a></li><li class="none"><a href="../fortress/servlet.html">Servlet</a></li><li class="none"><a href="../lifecycle/index.html">Lifecycle Extensions</a></li><li class="none"><a href="../fortress/design-notes.html">Design Notes</a></li></ul></div><div id="menuFramework"><h5>Framework</h5><ul><li class="collapsed"><a href="../framework/index.html">Documentation</a></li><li class="expanded"><a href="../developing/index.html">Developing</a><ul><li class="none"><a href="../developing/authors.html">Authors</a></li><li cl
 ass="none"><a href="../developing/introduction.html">Introduction</a></li><li class="none"><strong><a href="../developing/decomposing.html">Decomposition</a></strong></li><li class="none"><a href="../developing/framework.html">Avalon Framework</a></li><li class="none"><a href="../developing/implementing.html">Using the framework</a></li><li class="none"><a href="../developing/compatiblity.html">Compatibility with Avalon</a></li><li class="none"><a href="../developing/strategies.html">Development Strategies</a></li><li class="none"><a href="../developing/conclusion.html">Conclusion</a></li></ul></li></ul></div><div id="menuComponents"><h5>Components</h5><ul><li class="none"><a href="../component-list.html">Overview</a></li><li class="collapsed"><a href="../sourceresolve/index.html">Sourceresolver</a></li><li class="collapsed"><a href="../store/index.html">Store</a></li><li class="none"><a href="../thread.html">Thread</a></li><li class="collapsed"><a href="../xmlutil/index.htm
 l">XMLUtil</a></li></ul></div><div id="menuContainerkit"><h5>Containerkit</h5><ul><li class="none"><a href="../containerkit.html">Overview</a></li><li class="collapsed"><a href="../instrument/index.html">Instrument</a></li><li class="collapsed"><a href="../lifecycle/index.html">Lifecycle</a></li><li class="none"><a href="../logger.html">Logger</a></li></ul></div><div id="menuDeprecated_Materials"><h5>Deprecated Materials</h5><ul><li class="none"><a href="../deprecation.html">Overview</a></li><li class="expanded"><a href="../deprecation.html">Old Documentation</a><ul><li class="none"><a href="../component.html">ECM</a></li><li class="collapsed"><a href="../event/index.html">Event</a></li><li class="none"><a href="../configuration.html">Configuration</a></li></ul></li></ul></div><div id="menuThanks"><h5>Thanks</h5><ul><li class="none"><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="External Link">to our sponsors!</a></li><li class="none"><a h
 ref="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="External Link">Sponsor the ASF</a></li></ul></div><div id="menuProject_Documentation"><h5>Project Documentation</h5><ul><li class="none"><a href="../index.html">About Apache Excalibur</a></li><li class="collapsed"><a href="../project-info.html">Project Info</a></li><li class="collapsed"><a href="../maven-reports.html">Project Reports</a></li><li class="none"><a href="http://maven.apache.org/development-process.html" class="externalLink" title="External Link">Development Process</a></li></ul></div></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="Decomposing_A_System"></a><h2>Decomposing A System</h2><p>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Excalibur - Decomposing A System</title>
+    <style type="text/css" media="all">
+      @import url("../css/maven-base.css");
+      @import url("../css/maven-theme.css");
+      @import url("../css/site.css");
+    </style>
+    <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
+          <meta name="author" content="Paul Hammant" />
+          <meta name="author" content="Berin Loritsch" />
+          </head>
+  <body class="composite">
+    <div id="banner">
+                    <span id="bannerLeft">
+    
+            Excalibur
+    
+            </span>
+                    <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+          
+  
+
+  
+    
+  
+  
+    
+            <div class="xleft">
+        Last Published: 2009-06-16
+                      </div>
+            <div class="xright">            <a href="../index.html">Home</a>
+            |
+                <a href="../fortress/index.html">Fortress</a>
+            |
+                <a href="../component-list.html">Components</a>
+            |
+                <a href="../containerkit.html">Containerkit</a>
+            
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+           
+  
+
+  
+    
+  
+  
+    
+                   <h5>Essentials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../index.html">Overview</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../mail-lists.html">Mailing Lists</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../svn.html">Subversion</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://wiki.apache.org/excalibur/" class="externalLink">Wiki</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://wiki.apache.org/excalibur/FrequentlyAskedQuestions" class="externalLink">FAQ</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://excalibur.apache.org/apidocs/" class="externalLink">Javadocs</a>
+          </li>
+              
+    <li class="none">
+                    <a href="http://excalibur.apache.org/download.cgi" class="externalLink">Download</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../issue-tracking.html">Issue Tracking</a>
+          </li>
+              
+                
+              
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../misc.html">Miscellaneous</a>
+                </li>
+          </ul>
+              <h5>Fortress</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../fortress/index.html">Overview</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/features.html">Features Oriented</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/getting-started.html">Getting Started</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/using-meta-info.html">Using Meta Info</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/cli.html">CLI</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/swing.html">Swing</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/servlet.html">Servlet</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../lifecycle/index.html">Lifecycle Extensions</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../fortress/design-notes.html">Design Notes</a>
+          </li>
+          </ul>
+              <h5>Framework</h5>
+            <ul>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../framework/index.html">Documentation</a>
+                </li>
+              
+                
+              
+      
+            
+      
+            
+            
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+            <li class="expanded">
+                    <a href="../developing/index.html">Developing</a>
+                  <ul>
+                  
+    <li class="none">
+                    <a href="../developing/authors.html">Authors</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/introduction.html">Introduction</a>
+          </li>
+                  
+    <li class="none">
+              <strong>Decomposition</strong>
+        </li>
+                  
+    <li class="none">
+                    <a href="../developing/framework.html">Avalon Framework</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/implementing.html">Using the framework</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/compatiblity.html">Compatibility with Avalon</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/strategies.html">Development Strategies</a>
+          </li>
+                  
+    <li class="none">
+                    <a href="../developing/conclusion.html">Conclusion</a>
+          </li>
+              </ul>
+        </li>
+          </ul>
+              <h5>Components</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../component-list.html">Overview</a>
+          </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../sourceresolve/index.html">Sourceresolver</a>
+                </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../store/index.html">Store</a>
+                </li>
+              
+    <li class="none">
+                    <a href="../thread.html">Thread</a>
+          </li>
+              
+                
+              
+      
+              
+        <li class="collapsed">
+                    <a href="../xmlutil/index.html">XMLUtil</a>
+                </li>
+          </ul>
+              <h5>Containerkit</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../containerkit.html">Overview</a>
+          </li>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+                  
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../instrument/index.html">Instrument</a>
+                </li>
+              
+                
+              
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../lifecycle/index.html">Lifecycle</a>
+                </li>
+              
+    <li class="none">
+                    <a href="../logger.html">Logger</a>
+          </li>
+          </ul>
+              <h5>Deprecated Materials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../deprecation.html">Overview</a>
+          </li>
+              
+          
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+                  
+      
+              
+        <li class="expanded">
+                    <a href="../deprecation.html">Old Documentation</a>
+                  <ul>
+                  
+    <li class="none">
+                    <a href="../component.html">ECM</a>
+          </li>
+                  
+                
+              
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+            
+      
+              
+        <li class="collapsed">
+                    <a href="../event/index.html">Event</a>
+                </li>
+                  
+    <li class="none">
+                    <a href="../configuration.html">Configuration</a>
+          </li>
+              </ul>
+        </li>
+          </ul>
+              <h5>Thanks</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="../../foundation/thanks.html">to our sponsors!</a>
+          </li>
+              
+    <li class="none">
+                    <a href="../../foundation/sponsorship.html">Sponsor the ASF</a>
+          </li>
+          </ul>
+                                           <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+            <img alt="Built by Maven" src="../images/logos/maven-feather.png"></img>
+          </a>
+                       
+  
+
+  
+    
+  
+  
+    
+        </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+        <div class="section"><h2><a name="Decomposing_A_System"></a>Decomposing A System</h2>
+<p>
     We will use a hypothetical business server to demonstrate
     how to identify services and Components.  After we define some
     services that are used in the system, we will take one of those
     services and define the different components needed by the
     service.  My goal is to pass on some concepts that will help
     you define your system in manageable pieces.
-  </p></div><div class="section"><a name="System_Analysis_--_Identifying_Components"></a><h2>System Analysis -- Identifying Components</h2><p>
+  </p>
+</div>
+<div class="section"><h2><a name="System_Analysis_--_Identifying_Components"></a>System Analysis -- Identifying Components</h2>
+<p>
       While it is beyond the scope of this presentation to provide
       a full-blown methodology, I do want to provide some pointers.
       We will start with the implementation oriented definition of
       Components and Services, and then provide a practical definition.
-    </p><table class="bodyTable"><tr class="b"><th>Component</th></tr><tr class="a"><td>
+    </p>
+<table class="bodyTable"><tr class="a"><th>Component</th>
+</tr>
+<tr class="b"><td>
         A Component is the combination of a work interface, and the
         implementation of that interface.  Its use provides a looser
         coupling between objects, allowing the implementation to
         change independently of its clients.
-      </td></tr></table><table class="bodyTable"><tr class="b"><th>Service</th></tr><tr class="a"><td>
+      </td>
+</tr>
+</table>
+<table class="bodyTable"><tr class="a"><th>Service</th>
+</tr>
+<tr class="b"><td>
         A Service is a group of one or more Components that provide
         a complete solution.  Examples of a Service are protocol
         handlers, job schedulers, and authentication and authorization
         services.
-      </td></tr></table><p>
+      </td>
+</tr>
+</table>
+<p>
       While these definitions provide a starting place, they don't
       give the whole picture.  In order to decompose a system (defined
       as a group of facilities that comprise a project) into the
       necessary parts, I advocate a top-down approach.  That way you
       will avoid being bogged down in details before you know what the
       different facilities are.
-    </p><div class="subsection"><a name="Determining_the_Scope_of_Your_Project"></a><h3>Determining the Scope of Your Project</h3><p>
+    </p>
+<div class="section"><h3><a name="Determining_the_Scope_of_Your_Project"></a>Determining the Scope of Your Project</h3>
+<p>
         You always have to start out with a general idea of what your
         project is supposed to accomplish.  In the commercial world, the
         initial statement of work accomplishes this.  In the open source
         world, this is usually accomplished by an idea or brainstorming
         session.  I can't stress enough the importance of having a high
         level view of the project.
-      </p><p>
+      </p>
+<p>
         Obviously, a large project will be comprised of many different
         services, and a small project will only have one or two.  If you
         start to feel a bit overwhelmed, just remind yourself that a large
         project is really an umbrella for a bunch of smaller projects.
         Eventually, you will get to the point where you will be able to
         comprehend the big picture.
-      </p></div></div><div class="section"><a name="Statement_of_Work:_Business_Server"></a><h2>Statement of Work: Business Server</h2><p>
+      </p>
+</div>
+</div>
+<div class="section"><h2><a name="Statement_of_Work:_Business_Server"></a>Statement of Work: Business Server</h2>
+<p>
       The Business Server is a hypothetical project.  For the purpose
       of our discussion, its function is to handle sales orders,
       automatically bill customers, and manage the inventory control.
@@ -79,7 +522,10 @@
       at the factory or warehouse.  The business server will be a
       distributed system, and each server will communicate with others
       via a messaging service.
-    </p></div><div class="section"><a name="Finding_the_Services"></a><h2>Finding the Services</h2><p>
+    </p>
+</div>
+<div class="section"><h2><a name="Finding_the_Services"></a>Finding the Services</h2>
+<p>
       We will use the Business Server Project to discover the services.
       Considering the overly broad statement of work, we can immediately
       begin to see some services defined in the description of the
@@ -92,46 +538,58 @@
       probably put a wrapper so that we still have a specific way of
       interacting with the commercial product.  The implementing company
       will build the majority of the services.
-    </p><div class="subsection"><a name="Explicit_Services"></a><h3>Explicit Services</h3><p>
+    </p>
+<div class="section"><h3><a name="Explicit_Services"></a>Explicit Services</h3>
+<p>
         We can quickly derive a number of services from the statement
         of work.  Our work is not done after this initial analysis,
         because the definition of some services requires the existence
         of other services.
-      </p><div class="subsection"><a name="Transaction_Processing_Service"></a><h3>Transaction Processing Service</h3><p>
-          The statement of work specifies that "Sales orders have to be
-          processed as they come in".  This means we need to have a
+      </p>
+<div class="section"><h3><a name="Transaction_Processing_Service"></a>Transaction Processing Service</h3>
+<p>
+          The statement of work specifies that &quot;Sales orders have to be
+          processed as they come in&quot;.  This means we need to have a
           mechanism of receiving sales requests and automatically process
           them.  This is similar to the way web servers work.  They
           receive a request for a resource, process it, and return a
           result (e.g. the HTML page).  This is known as Transaction
           Processing.
-        </p><p>
+        </p>
+<p>
           To be fair, there are different types of transactions.  The
           generic transaction service will most likely have to be broken
-          down into something more specific like a "Sales Order Processor".
+          down into something more specific like a &quot;Sales Order Processor&quot;.
           The approach has to do with how generic you make your service.
           There is a balance between usability and reusability.  The more
           generic a service is, the more reusable it is.  Usually it is
           also more difficult to comprehend.
-        </p></div><div class="subsection"><a name="Scheduling_Service"></a><h3>Scheduling Service</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="Scheduling_Service"></a>Scheduling Service</h3>
+<p>
           There are a couple of instances where an event must be scheduled
           for a specified amount of time after a transaction.  In addition,
           the inventory control processes need to kick off supply orders on
-          a periodic basis.  Because the statement of work states "server
+          a periodic basis.  Because the statement of work states &quot;server
           automatically bills the customers 30 days after the sales order
-          is filled" we need a scheduling service.  The good news is that
+          is filled&quot; we need a scheduling service.  The good news is that
           Avalon Cornerstone provides one for us so we don't have to create
           our own.
-        </p></div><div class="subsection"><a name="Messaging_Service"></a><h3>Messaging Service</h3><p>
-          The statement of work specifies that "each server will
-          communicate via a messaging service" in our distributed system.
+        </p>
+</div>
+<div class="section"><h3><a name="Messaging_Service"></a>Messaging Service</h3>
+<p>
+          The statement of work specifies that &quot;each server will
+          communicate via a messaging service&quot; in our distributed system.
           Let's face it, sometimes customers want a specific product or
           method they want to use.  The messaging service is a prime
           example of using another company's product.  Most likely, we
           would use Java Messaging Service (JMS) to interface with the
           Messaging Service.  Since JMS is a standard, it is unlikely
           that the interface will change any time soon.
-        </p><p>
+        </p>
+<p>
           In practical experience, a well-designed message oriented system
           will scale better than object oriented systems (like EJB).  One
           reason for better scalability is that messaging tends to have
@@ -139,38 +597,57 @@
           it is easier to spread the load of message processing across all
           servers instead of concentrating all the processing in a small
           cluster of servers (or even just one server).
-        </p></div><div class="subsection"><a name="Inventory_Control_Service"></a><h3>Inventory Control Service</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="Inventory_Control_Service"></a>Inventory Control Service</h3>
+<p>
           While this is not a classic server piece in textbooks, it is a
           requirement of this system.  The inventory control service
           routinely monitors the records for what the factory or warehouse
           has in stock, and triggers events when stock starts running out.
-        </p></div></div><div class="subsection"><a name="Implied_Services"></a><h3>Implied Services</h3><p>
+        </p>
+</div>
+</div>
+<div class="section"><h3><a name="Implied_Services"></a>Implied Services</h3>
+<p>
         Using experience with past systems, and further breaking down
         other services will yield a number of services that the system
         needs that wasn't specified.  Due to space limitations, we will
         avoid doing a full decomposition.
-      </p><div class="subsection"><a name="Authentication_and_Authorization_Service"></a><h3>Authentication and Authorization Service</h3><p>
+      </p>
+<div class="section"><h3><a name="Authentication_and_Authorization_Service"></a>Authentication and Authorization Service</h3>
+<p>
           The authentication and authorization service is not necessarily
           specified in the statement of work -- but all business systems
           must take security seriously.  That means all clients of the system
           must be authenticated, and every action of the user must be
           authorized.
-        </p></div><div class="subsection"><a name="Workflow_Automation_Service"></a><h3>Workflow Automation Service</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="Workflow_Automation_Service"></a>Workflow Automation Service</h3>
+<p>
           Workflow automation is a hot development area in enterprise
           systems.  If you don't use a third party workflow management
           server, you will have to invent your own.  Workflow automation
           is generally the act of using a software system to route tasks
           through a Company's business process.  For more information,
           view the Workflow Management Council's web page at
-          <a href="http://www.wfmc.org" class="externalLink" title="External Link">http://www.wfmc.org</a>.
-        </p></div><div class="subsection"><a name="Document_Repository_Service"></a><h3>Document Repository Service</h3><p>
-          This definition of a "document repository" is very loosely
+          <a href="http://www.wfmc.org" class="externalLink">http://www.wfmc.org</a>.
+        </p>
+</div>
+<div class="section"><h3><a name="Document_Repository_Service"></a>Document Repository Service</h3>
+<p>
+          This definition of a &quot;document repository&quot; is very loosely
           defined as the current state of information in a task.  In
           other words, when the company receives a purchase order, our
           system needs to store and recall the purchase order information.
           The same goes for billing and any other process in the system
           from inventory to new customer requests.
-        </p></div></div><div class="subsection"><a name="Summary"></a><h3>Summary</h3><p>
+        </p>
+</div>
+</div>
+<div class="section"><h3><a name="Summary"></a>Summary</h3>
+<p>
         I hope that the examples of services for the Business Server
         project will help you discover more.  You will find that as you
         go from higher levels of abstraction down to lower levels, you
@@ -182,7 +659,8 @@
         you can change vendors later.  Some services are actually multiple
         services acting as one larger service.  Some are already available
         within Avalon Excalibur or Avalon Cornerstone.
-      </p><p>
+      </p>
+<p>
         One thing to keep in mind while discovering the services in a
         system is that a service should be a high level sub-system.  This
         will help you define components using teams of analysts.  Because
@@ -192,19 +670,27 @@
         overlap.  If you decide to do the parallel analysis, you should
         come back together to identify common Components so that you can
         reuse as much code as possible.
-      </p><img src="../images/deployment.gif" alt=""></img></div></div><div class="section"><a name="Finding_Components"></a><h2>Finding Components</h2><p>
+      </p>
+<img src="../images/deployment.gif" /></div>
+</div>
+<div class="section"><h2><a name="Finding_Components"></a>Finding Components</h2>
+<p>
       We will use the Document Repository Service mentioned already for the
       process of identifying the proper Components.  For the sake of our
       conversation, we will now state the requirements of the Document
       Repository Service.  The repository will use a database for persistent
       storage, identify and authorize clients, and cache documents in memory.
-    </p><div class="subsection"><a name="Practical_Definition_of_Components"></a><h3>Practical Definition of Components</h3><p>
-        When we talk about components, you have to think in terms of "What
-        facilities does my service need to operate?"  Avalon was conceived
+    </p>
+<div class="section"><h3><a name="Practical_Definition_of_Components"></a>Practical Definition of Components</h3>
+<p>
+        When we talk about components, you have to think in terms of &quot;What
+        facilities does my service need to operate?&quot;  Avalon was conceived
         with the concept of <em>casting</em> your system.  The
         developer of the system        would come up with a list of responsibilities
         for the Component known        as its <em>role</em>.
-      </p><div class="subsection"><a name="What_is_a_Role_"></a><h3>What is a Role?</h3><p>
+      </p>
+<div class="section"><h3><a name="What_is_a_Role"></a>What is a Role?</h3>
+<p>
           The concept of roles comes from the theater.  A play, musical, or
           movie will have a certain number of roles that actors play.  Although
           there never seems to be a shortage of actors, there are a finite
@@ -213,17 +699,19 @@
           script determines how you interact with the Component.  Think of the
           different roles in your system, and you will have your
           <em>cast</em> of Components so to speak.
-        </p><p>
+        </p>
+<p>
           A role is the contract for a type of component.  For example, our
           Document Repository Service needs to interact with a database.
-          Avalon Excalibur defines a Component that satisfies the role "Data
-          Source".  Excalibur includes two different Components that satisfy
+          Avalon Excalibur defines a Component that satisfies the role &quot;Data
+          Source&quot;.  Excalibur includes two different Components that satisfy
           that role, depending on the setting our Service will be living in;
           however, they both satisfy the same contracts.  The majority of
           Avalon based systems will only use one active Component for each
           role.  The script is the work interface: the interface with which
           other components interact.
-        </p><p>
+        </p>
+<p>
           There are specific contracts that you must define and keep in mind
           when you specify interfaces for your Components.  The contracts
           specify what users of the Component must provide, and what the
@@ -232,25 +720,33 @@
           storage Component and a permanent storage Component.  When the
           interface and contract are defined, you can work on your
           implementation.
-        </p></div></div><div class="subsection"><a name="What_is_a_good_candidate_for_a_Component_"></a><h3>What is a good candidate for a Component?</h3><p>
+        </p>
+</div>
+</div>
+<div class="section"><h3><a name="What_is_a_good_candidate_for_a_Component"></a>What is a good candidate for a Component?</h3>
+<p>
         We have already identified four possibilities for Components within
         our Document Repository Service: DataSourceComponent (from Excalibur),
         Cache, Repository, and Guardian.  You should look for roles with a high
         likelihood of multiple implementations that need to inter-operate
         seamlessly.
-      </p><p>
+      </p>
+<p>
         Using that example, you will discover several instances where you need
         replaceable facilities.  Most of the time, you will only be using one
         implementation of the facility, but you need the ability to upgrade it
         independently of the rest of the system.  Other times, you will need
         alternate implementations due to environmental issues.  For example,
-        the "Data Source" that Excalibur defined will usually handle all the
+        the &quot;Data Source&quot; that Excalibur defined will usually handle all the
         JDBC Connection pooling itself-but sometimes you want to take advantage
         of that facility built into a Java 2 Enterprise Edition (J2EE) server.
-        Excalibur solves this by having a "Data Source" that directly pools and
+        Excalibur solves this by having a &quot;Data Source&quot; that directly pools and
         manages the JDBC connections, and one that uses Java's Naming and
         Directory Interface (JNDI) to get the specified connection.
-      </p></div><div class="subsection"><a name="What_is_not_a_good_Component_"></a><h3>What is not a good Component?</h3><p>
+      </p>
+</div>
+<div class="section"><h3><a name="What_is_not_a_good_Component"></a>What is not a good Component?</h3>
+<p>
         People who are used to JavaBeans tend to implement everything as a
         JavaBean.  This means everything from data modeling to transaction
         processing.  If you used this approach with Components, you might end
@@ -259,7 +755,8 @@
         pulls data from another resource, but the data should remain distinct
         as data.  An example of this philosophy in Avalon Excalibur is the
         fact that the Connection is not a Component.
-      </p><p>
+      </p>
+<p>
         Another example could be the Guardian Component we specified earlier.
         It could be argued that the logic involved in the Guardian is so
         specific to the Document Repository Service that it could not be used
@@ -275,11 +772,16 @@
         example of the Guardian Component and the Repository Component, we
         could argue that our Guardian is so specific to the Repository, that it
         is not implemented as a Component.
-      </p></div><div class="subsection"><a name="Decomposing_the_Document_Repository_Service"></a><h3>Decomposing the Document Repository Service</h3><p>
+      </p>
+</div>
+<div class="section"><h3><a name="Decomposing_the_Document_Repository_Service"></a>Decomposing the Document Repository Service</h3>
+<p>
         We will list the Components that we are going to implement with a
         description of their roles, the rationale, and their origination (if
         the component already exists).
-      </p><div class="subsection"><a name="DocumentRepository"></a><h3>DocumentRepository</h3><p>
+      </p>
+<div class="section"><h3><a name="DocumentRepository"></a>DocumentRepository</h3>
+<p>
           The DocumentRepository is the parent Component of the whole service.
           In Avalon, services are implemented as Blocks, which are a specific
           kind of Component.  The Block must have a work interface that extends
@@ -287,31 +789,73 @@
           Avalon's Component interface.  Please note that Block and Service are
           interfaces that are part of Avalon Phoenix.  In the end, a Service is
           still technically just a specific type of Component.
-        </p><p>
+        </p>
+<p>
           The DocumentRepository is our method of getting Document objects from
           persistent storage.  It interacts with the other Components in the
           service to provide security, functionality, and speed.  This
           particular DocumentRepository will connect to a database and employ
           the logic to build the Document objects internally.
-        </p></div><div class="subsection"><a name="DataSourceComponent"></a><h3>DataSourceComponent</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="DataSourceComponent"></a>DataSourceComponent</h3>
+<p>
           The DataSourceComponent is supplied by Avalon Excalibur.  It is our
           method of retrieving valid JDBC Connection objects for our use.
-        </p></div><div class="subsection"><a name="Cache"></a><h3>Cache</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="Cache"></a>Cache</h3>
+<p>
           The Cache is a short-term memory-based storage facility.  The
           DocumentRepository will use it to store Document objects referenced
           by a hash algorithm.  In order to promote the reusability of the
           Cache Component, the stored object must implement a Cacheable
           interface.
-        </p></div><div class="subsection"><a name="Guardian"></a><h3>Guardian</h3><p>
+        </p>
+</div>
+<div class="section"><h3><a name="Guardian"></a>Guardian</h3>
+<p>
           The Guardian Component is used to manage permissions based on the
           Principal.  The Guardian will load its permission sets from a
           database.  The Guardian will use the standard Java security model to
           enforce access to the specific Document objects.
-        </p></div></div><div class="subsection"><a name="Summary"></a><h3>Summary</h3><p>
+        </p>
+</div>
+</div>
+<div class="section"><h3><a name="Summary"></a>Summary</h3>
+<p>
         At this point, you should have an idea of what makes a good Component.
         The examples describe all the Components that will be in the Document
         Repository Service, with a brief summary of what they will do.  A quick
         glance through the list supports the approach of only implementing
         facilities as Components -- not data.  At this point, you should be able
         to determine what components your services need to operate.
-      </p></div></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 1997-2007, The Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file
+      </p>
+</div>
+</div>
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">&#169;  
+          2009
+    
+          The Apache Software Foundation
+          
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+  </body>
+</html>



---------------------------------------------------------------------
To unsubscribe, e-mail: scm-unsubscribe@excalibur.apache.org
For additional commands, e-mail: scm-help@excalibur.apache.org