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 [15/28] - in /excalibur/site: ./ css/ developing/ event/
fortress/ framework/ images/logos/ instrument/ lifecycle/ sourceresolve/
store/ xmlutil/
Modified: excalibur/site/framework/guide-patterns-avalon.html
URL: http://svn.apache.org/viewvc/excalibur/site/framework/guide-patterns-avalon.html?rev=785324&r1=785323&r2=785324&view=diff
==============================================================================
--- excalibur/site/framework/guide-patterns-avalon.html (original)
+++ excalibur/site/framework/guide-patterns-avalon.html Tue Jun 16 17:55:25 2009
@@ -1,31 +1,455 @@
-<!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 - </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></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="expanded"><a href="../framework/index.html">Documentation</a><ul><li class="none"><a href="../framework/lifecycle.html">Lifecycle</a></li><li class="none"><a href="../framework/guide-cop-in-avalon.html">COP in Avalon<
/a></li><li class="none"><strong><a href="../framework/guide-patterns-avalon.html">Patterns in Avalon</a></strong></li><li class="none"><a href="../framework/guide-patterns-ioc.html">IOC Patterns</a></li><li class="none"><a href="../framework/guide-patterns-ioc-security.html">IOC Security</a></li><li class="none"><a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a></li><li class="none"><a href="../framework/guide-patterns-soii.html">Interface and Implementation</a></li><li class="none"><a href="../framework/component-design.html">Designing Components</a></li><li class="none"><a href="../framework/best-practices.html">Best Practices</a></li></ul></li><li class="collapsed"><a href="../developing/index.html">Developing</a></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.html">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="n
one"><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="External Link">to our sponsors!</a></li><li class="none"><a href="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="Getting_Started_with_Patterns"></a><h2>Getting Started with Patterns</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 - </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" />
+ </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="expanded">
+ <a href="../framework/index.html">Documentation</a>
+ <ul>
+
+ <li class="none">
+ <a href="../framework/lifecycle.html">Lifecycle</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-cop-in-avalon.html">COP in Avalon</a>
+ </li>
+
+ <li class="none">
+ <strong>Patterns in Avalon</strong>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-ioc.html">IOC Patterns</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-ioc-security.html">IOC Security</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soii.html">Interface and Implementation</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/component-design.html">Designing Components</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/best-practices.html">Best Practices</a>
+ </li>
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="collapsed">
+ <a href="../developing/index.html">Developing</a>
+ </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">
+ <header>Patterns in Avalon<authors><person name="Avalon Documentation Team" email="dev@avalon.apache.org"></authors></header><div class="section"><h2><a name="Getting_Started_with_Patterns"></a>Getting Started with Patterns</h2>
+<p>
Avalon takes many design patterns and architectural mindsets, and
implements the best ones for servers. There are different kinds of
patterns that represent different aspects of Avalon. Avalon uses four
@@ -33,39 +457,74 @@
Implementation, Inversion of Control, Multi-Dimensional Separation
of Concerns, and Aspect Oriented Programming. Avalon also uses several
architectural patterns like the Singleton and the Factory.
- </p></div><div class="section"><a name="The_Avalon_Patterns_in_short"></a><h2>The Avalon Patterns in short</h2><p>
+ </p>
+</div>
+<div class="section"><h2><a name="The_Avalon_Patterns_in_short"></a>The Avalon Patterns in short</h2>
+<p>
We provide you with a short description of the patterns first, with a
detailed description of each pattern on a separate page.
- </p><div class="subsection"><a name="Separation_of_Interface_and_Implementation"></a><h3>Separation of Interface and Implementation</h3><p>
-<strong>Summary:</strong> The Separation of Interface and Implementation is
+ </p>
+<div class="section"><h3><a name="Separation_of_Interface_and_Implementation"></a>Separation of Interface and Implementation</h3>
+<p><strong>Summary:</strong> The Separation of Interface and Implementation is
a core feature of the Java language. However, it is often misused so we
list it as one of the Avalon patterns, and our use of it is extensive.
- </p><p>
-<a href="guide-patterns-soii.html">
+ </p>
+<p><a href="guide-patterns-soii.html">
More Information...
- </a>
-</p></div><div class="subsection"><a name="Inversion_of_Control"></a><h3>Inversion of Control</h3><p>
-<strong>Summary:</strong> Avalon not only has an inheritance hierarchy, but also a
+ </a></p>
+</div>
+<div class="section"><h3><a name="Inversion_of_Control"></a>Inversion of Control</h3>
+<p><strong>Summary:</strong> Avalon not only has an inheritance hierarchy, but also a
component hierarchy. In this hierarchy, the control of program flow is
completely in the hands of the parent component(s), as soldiers in the
military take orders from their officers.
- </p><p>
-<link href="guide-patterns-ioc.html">
+ </p>
+<p><link href="guide-patterns-ioc.html">
More Information...
- </link>
-</p></div><div class="subsection"><a name="Multi-Dimensional_Separation_of_Concerns"></a><h3>Multi-Dimensional Separation of Concerns</h3><p>
-<strong>Summary:</strong> You just read the introduction about patterns before
+ </link></p>
+</div>
+<div class="section"><h3><a name="Multi-Dimensional_Separation_of_Concerns"></a>Multi-Dimensional Separation of Concerns</h3>
+<p><strong>Summary:</strong> You just read the introduction about patterns before
reading about Avalon's patterns because that enables you to reuse the
knowledge you gained about patterns in a context other than that of
Avalon. We do this with software as well.
- </p><p>
-<link href="guide-patterns-soc.html">
+ </p>
+<p><link href="guide-patterns-soc.html">
More Information...
- </link>
-</p></div><div class="subsection"><a name="Aspect-Oriented_Programming"></a><h3>Aspect-Oriented Programming</h3><p>
-<strong>Summary:</strong> this is the next logical step ofter Separation of
+ </link></p>
+</div>
+<div class="section"><h3><a name="Aspect-Oriented_Programming"></a>Aspect-Oriented Programming</h3>
+<p><strong>Summary:</strong> this is the next logical step ofter Separation of
Concerns. Many concerns cannot be centrally addressed using the standard
OOP mechanisms. Using AOP (which is an extension to OOP), we would be
able to do so in a simple fashion. As there is no good AOP facility
- in Java, we use "aspect marker interfaces" and COP instead.
- </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
+ in Java, we use "aspect marker interfaces" and COP instead.
+ </p>
+</div>
+</div>
+
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 2009
+
+ The Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
Modified: excalibur/site/framework/guide-patterns-ioc-security.html
URL: http://svn.apache.org/viewvc/excalibur/site/framework/guide-patterns-ioc-security.html?rev=785324&r1=785323&r2=785324&view=diff
==============================================================================
--- excalibur/site/framework/guide-patterns-ioc-security.html (original)
+++ excalibur/site/framework/guide-patterns-ioc-security.html Tue Jun 16 17:55:25 2009
@@ -1,38 +1,463 @@
-<!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 - </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></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="expanded"><a href="../framework/index.html">Documentation</a><ul><li class="none"><a href="../framework/lifecycle.html">Lifecycle</a></li><li class="none"><a href="../framework/guide-cop-in-avalon.html">COP in Avalon<
/a></li><li class="none"><a href="../framework/guide-patterns-avalon.html">Patterns in Avalon</a></li><li class="none"><a href="../framework/guide-patterns-ioc.html">IOC Patterns</a></li><li class="none"><strong><a href="../framework/guide-patterns-ioc-security.html">IOC Security</a></strong></li><li class="none"><a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a></li><li class="none"><a href="../framework/guide-patterns-soii.html">Interface and Implementation</a></li><li class="none"><a href="../framework/component-design.html">Designing Components</a></li><li class="none"><a href="../framework/best-practices.html">Best Practices</a></li></ul></li><li class="collapsed"><a href="../developing/index.html">Developing</a></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.html">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="n
one"><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="External Link">to our sponsors!</a></li><li class="none"><a href="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="Introduction"></a><h2>Introduction</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 - </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" />
+ </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="expanded">
+ <a href="../framework/index.html">Documentation</a>
+ <ul>
+
+ <li class="none">
+ <a href="../framework/lifecycle.html">Lifecycle</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-cop-in-avalon.html">COP in Avalon</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-avalon.html">Patterns in Avalon</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-ioc.html">IOC Patterns</a>
+ </li>
+
+ <li class="none">
+ <strong>IOC Security</strong>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soii.html">Interface and Implementation</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/component-design.html">Designing Components</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/best-practices.html">Best Practices</a>
+ </li>
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="collapsed">
+ <a href="../developing/index.html">Developing</a>
+ </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">
+ <header>Avalon Framework - Guide - Security Concerns<authors><person name="Berin Loritsch" email="bloritsch@apache.org"></authors></header><div class="section"><h2><a name="Introduction"></a>Introduction</h2>
+<p>
One major concern for many companies is the security of a system.
In this context security is defined as protection of data, and
quality of service (QOS). Both of these fall under security because
a system must protect itself from these two forms of attack. When
a company loses a system, it loses business, and the money it
loses can reach scary amounts.
- </p><p>
+ </p>
+<p>
For the purpose of this discussion, we will address the first
aspect (protection from crackers and system infiltration). Many
times, the same fixes for this type of protection inherently fix
@@ -41,14 +466,17 @@
architecture. Why didn't I say encryption? It is because
encryption does not equal security. It is only part of the whole
system.
- </p><div class="subsection"><a name="Authentication"></a><h3>Authentication</h3><p>
+ </p>
+<div class="section"><h3><a name="Authentication"></a>Authentication</h3>
+<p>
Authentication is the process of identifying parties. In a completely
trusted system, authentication is as simple as grabbing a reference
to the object or entity you want to manipulate. However, sometimes
you have trusted systems running in hostile environments (e.g. the
Internet). In those cases you have to make sure that the entity
is the correct one.
- </p><p>
+ </p>
+<p>
There are two sides of authentication. On one side, you are
authenticating an entity you want to do business with. On the other
side, there is an entity wanting to do business with you. This is
@@ -59,7 +487,8 @@
telemarketer calls from ACME Loan Machine, Inc., they know who you
are--although if you are smart, you will make them jump through
hoops to authenticate themselves.
- </p><p>
+ </p>
+<p>
Currently, Avalon identifies blocks as trusted parties. In other
words, the fact that they are installed correctly in the proper
directory is enough to mark them as authenticated. Much like a
@@ -68,7 +497,8 @@
means that whether the block assumes all components are trusted
or it forces the blocks to authenticate themselves is up to the
block.
- </p><p>
+ </p>
+<p>
For systems that deal with sensitive information, authentication
becomes more of an issue. You must validate that the components
in use are the ones you have authorized for use. The more open a
@@ -76,53 +506,66 @@
role. If you have components that are transmitted over some form
of communications system (wire, air, etc.) you must verify that
they are who they say they are.
- </p><p>
+ </p>
+<p>
For this purpose, protocols like Kerberos and Leighton-Micali have
been defined. It is beyond the scope of this page to discuss the
pros and cons of each system.
- </p></div><div class="subsection"><a name="Authorization"></a><h3>Authorization</h3><p>
+ </p>
+</div>
+<div class="section"><h3><a name="Authorization"></a>Authorization</h3>
+<p>
Once a component has been authenticated (in other words its identity
has been authoritatively validated), then you must decide what access
it has to your systems. A fully trusted component can do what it likes.
An untrusted component must be denied functions it is not allowed.
- </p><p>
+ </p>
+<p>
Authorization is part of the architecture, but is significant enough
to warrant its own concern. The best rule of thumb is to hide access
to everything unless the component is trusted. When hiding is not
an option, then you have to resort to denying access. For the security
conscious, all denied accesses should be logged along with the component's
identifier.
- </p></div><div class="subsection"><a name="Architecture"></a><h3>Architecture</h3><p>
+ </p>
+</div>
+<div class="section"><h3><a name="Architecture"></a>Architecture</h3>
+<p>
Avalon already has the framework for the proper secure architecture.
With proper planning, security can be added without recoding the components.
However there are some rules of thumb for paranoid programming.
- </p><ol>
- <li>
+ </p>
+<ol type="1"><li>
Never expose anything that does not need to be exposed. Information
hiding is as important in security as it is in Component
Oriented Programming (COP).
</li>
- <li>
+<li>
Any component that originates from your own jar should be trusted--you
provided it after all.
</li>
- <li>
+<li>
Any component that originates from another source, and especially over
a wire, should be treated with suspicion. Authenticate it, and if it
checks out, trust it. Otherwise, don't give it access--you don't know
where it's been or who created it.
</li>
- <li>
+<li>
Encrypt <strong>all</strong> communications. Period.
</li>
- </ol></div></div><div class="section"><a name="From_the_Sublime_to_the_Ridiculous"></a><h2>From the Sublime to the Ridiculous</h2><p>
+</ol>
+</div>
+</div>
+<div class="section"><h2><a name="From_the_Sublime_to_the_Ridiculous"></a>From the Sublime to the Ridiculous</h2>
+<p>
Throughout my short career I have been exposed to a wide range of security
implementations. Having worked for a DoD contractor, I learned about physical
security requirements (how to manage paper files, and the rules and regulations
regarding secure information). However in a recent attempt to install a
solution at our customer's site, I learned more about computer security
than I have at any other time.
- </p><p>
+ </p>
+<p>
Our customer, a well known corporation whom I will call ACME for
anonymity, is in custody of sensitive information. Product movement data,
financial data, and demographic data are all stored in one of a couple of
@@ -132,23 +575,26 @@
subject of many CERT advisories in the Unix world), we hit a brick wall. Our
application was no longer trusted, and was not to be installed. Luckily
the next version of the application server fixed that problem.
- </p><p>
+ </p>
+<p>
In the midst of this, I decided to learn as much as I could about operating
in a hardened environment. Hardening involves turning off access to anything
that is not needed, and only allowing what is needed. All mail servers, ftp
servers, rpc services, telnet, and any other clear text communications ports need
to be removed. All communication into and out of the box needs to be
encrypted, with the exception of HTTP (although we were using HTTPS).
- </p><p>
+ </p>
+<p>
All of this was necessary. I understand the principles behind it. However,
I decided to ask their security analyst how to learn more--so we don't run
into this problem again. He gave me a link to
<link href="http://www.sans.org">SANS institute</link> and a word of
- advice: "Be paranoid. Don't trust anything."
- </p><p>
+ advice: "Be paranoid. Don't trust anything."
+ </p>
+<p>
There is a point where the aforementioned philosophy goes a bit too far. The
case in point relates to a story I heard working with the DoD. During the
- height of the "Cold War" between the US and Russia, a US commanding
+ height of the "Cold War" between the US and Russia, a US commanding
officer required that all the computers be placed on these huge power
conditioners to reduce the Electro-Magnetic Interference (EMI) coming from the
power line feedback of the computers. His rationalization was that he was
@@ -157,7 +603,8 @@
improbable; no one can identify the bits travelling on a computer from EMI in the
power lines due to the level of noise (clocks, addressing lines,
<em>encrypted data</em>, and other computers on the network).
- </p><p>
+ </p>
+<p>
The security industry has a general rule of thumb to ensure that you don't spend
too much time in this area: The cost of cracking the server should be more than
the information that is protected is worth. Basically it boils down to this:
@@ -169,7 +616,35 @@
protecting free information then you can safely ignore security. While the information
is monetarily free to customers, it has value that can be measured in pride, respect,
and accountability.
- </p><p>
+ </p>
+<p>
The moral of the story is be paranoid to a point. Avalon is designed to be
a trusted system, and will be improved to work in an untrusted network.
- </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">©
+ 2009
+
+ The Apache Software Foundation
+
+
+
+
+
+
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
Modified: excalibur/site/framework/guide-patterns-ioc.html
URL: http://svn.apache.org/viewvc/excalibur/site/framework/guide-patterns-ioc.html?rev=785324&r1=785323&r2=785324&view=diff
==============================================================================
--- excalibur/site/framework/guide-patterns-ioc.html (original)
+++ excalibur/site/framework/guide-patterns-ioc.html Tue Jun 16 17:55:25 2009
@@ -1,57 +1,491 @@
-<!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 - </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></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="expanded"><a href="../framework/index.html">Documentation</a><ul><li class="none"><a href="../framework/lifecycle.html">Lifecycle</a></li><li class="none"><a href="../framework/guide-cop-in-avalon.html">COP in Avalon<
/a></li><li class="none"><a href="../framework/guide-patterns-avalon.html">Patterns in Avalon</a></li><li class="none"><strong><a href="../framework/guide-patterns-ioc.html">IOC Patterns</a></strong></li><li class="none"><a href="../framework/guide-patterns-ioc-security.html">IOC Security</a></li><li class="none"><a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a></li><li class="none"><a href="../framework/guide-patterns-soii.html">Interface and Implementation</a></li><li class="none"><a href="../framework/component-design.html">Designing Components</a></li><li class="none"><a href="../framework/best-practices.html">Best Practices</a></li></ul></li><li class="collapsed"><a href="../developing/index.html">Developing</a></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.html">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="n
one"><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="External Link">to our sponsors!</a></li><li class="none"><a href="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="Introduction"></a><h2>Introduction</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 - </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" />
+ </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="expanded">
+ <a href="../framework/index.html">Documentation</a>
+ <ul>
+
+ <li class="none">
+ <a href="../framework/lifecycle.html">Lifecycle</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-cop-in-avalon.html">COP in Avalon</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-avalon.html">Patterns in Avalon</a>
+ </li>
+
+ <li class="none">
+ <strong>IOC Patterns</strong>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-ioc-security.html">IOC Security</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soc.html">Seperation of Concerns</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/guide-patterns-soii.html">Interface and Implementation</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/component-design.html">Designing Components</a>
+ </li>
+
+ <li class="none">
+ <a href="../framework/best-practices.html">Best Practices</a>
+ </li>
+ </ul>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li class="collapsed">
+ <a href="../developing/index.html">Developing</a>
+ </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">
+ <header>Avalon Framework - Guide - Inversion of Control<authors><person name="Berin Loritsch" email="bloritsch@apache.org"><person name="Leo Simons" email="leosimons@apache.org"></authors></header><div class="section"><h2><a name="Introduction"></a>Introduction</h2>
+<p>
One of the key design principles behind Avalon is the principle
of <em>Inversion of Control</em>. <em>Inversion of Control</em> is
a concept promoted by one of the founders of the Avalon project,
<link href="mailto:stefano@apache.org">Stefano Mazzocchi</link>. The
principle enforces security by design.
- </p><p>
+ </p>
+<p>
It is difficult to track down one paper that defines this pattern
at length, so here are a couple of different definitions of
<em>Inversion of Control</em>.
- </p></div><div class="section"><a name="What_it_Means"></a><h2>What it Means</h2><p>
+ </p>
+</div>
+<div class="section"><h2><a name="What_it_Means"></a>What it Means</h2>
+<p>
The Framework plays the role of the main program in coordinating
and sequencing events and application activity.
- </p><p>
+ </p>
+<p>
A designer sets up a chain among objects that can all react
to certain messages in a delegation hierarchy. There is one
major semantic detail: Inversion of Control refers to a parent
object <em>controlling</em> a child object. With this distinction,
the SAX API is not considered Inversion of Control because its
purpose is to send <em>information</em> from a source to a handler.
- </p><div class="subsection"><a name="Definition_by_Analogy"></a><h3>Definition by Analogy</h3><p>
+ </p>
+<div class="section"><h3><a name="Definition_by_Analogy"></a>Definition by Analogy</h3>
+<p>
There are a couple of different analogies that make
understanding <em>Inversion of Control</em> easier. We
experience this in many different ways in regular life,
so we are borrowing the form in code. One analogy is called
- the "Chain of Command" in the military.
- </p></div><div class="subsection"><a name="Chain_of_Command"></a><h3>Chain of Command</h3><p>
+ the "Chain of Command" in the military.
+ </p>
+</div>
+<div class="section"><h3><a name="Chain_of_Command"></a>Chain of Command</h3>
+<p>
This is probably the clearest parallel to <em>Inversion
of Control</em>. The military provides each new recruit
with the basic things he needs to operate at his rank,
@@ -61,7 +495,8 @@
entity (i.e. Commanding Officer in this analogy). The
instantiating entity then acts on that component how it
needs to act.
- </p><p>
+ </p>
+<p>
There are some deficiencies in this analogy as some military
or ex-military people have explained to me. In the military,
<strong>any</strong> Commanding Officer can issue commands to
@@ -71,12 +506,15 @@
parent (controlling) object to a child (controlled) component.
A parent may have many children, but children only have one
parent.
- </p></div></div><div class="section"><a name="How_to_Apply_It"></a><h2>How to Apply It</h2><p>
- <em>Inversion of Control</em> is applied in a very simple
+ </p>
+</div>
+</div>
+<div class="section"><h2><a name="How_to_Apply_It"></a>How to Apply It</h2>
+<p><em>Inversion of Control</em> is applied in a very simple
manner. Basically, it means that the component architecture
employs a <em>passive</em> structure. See the following code:
</p>
- <div class="source"><pre>
+<div class="source"><pre>
class MyComponent
implements LogEnabled
{
@@ -89,20 +527,52 @@
myMethod()
{
- logger.info("Hello World!");
+ logger.info("Hello World!");
}
}
- </pre></div>
- <p>
+ </pre>
+</div>
+<p>
The parent of MyComponent instantiates MyComponent, sets the
Logger, and calls myMethod. The component is not autonomous,
and is given a logger that has been configured by the parent.
- </p><p>
+ </p>
+<p>
The MyComponent class has no state apart from the parent, and
has no way of obtaining a reference to the logger implementation
without the parent giving it the implementation it needs.
- </p></div><div class="section"><a name="IOC_promotes_Security"></a><h2>IOC promotes Security</h2><p>A big advantage of IOC for server applications is that it promotes
+ </p>
+</div>
+<div class="section"><h2><a name="IOC_promotes_Security"></a>IOC promotes Security</h2>
+<p>A big advantage of IOC for server applications is that it promotes
security. You can read an analysis about this
<a href="guide-patterns-ioc-security.html">
here
- </a>.</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
+ </a>.</p>
+</div>
+
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 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