You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by as...@apache.org on 2007/09/08 22:17:47 UTC
svn commit: r573901 [4/44] - in /cocoon/site: site/ site/2.0/
site/2.0/developing/ site/2.0/faq/ site/2.0/howto/chaperon/
site/2.0/installing/ site/2.0/plan/ site/2.0/snippet/ site/2.0/tutorial/
site/2.0/userdocs/ site/2.0/userdocs/actions/ site/2.0/us...
Modified: cocoon/site/site/2.0/developing/index.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.0/developing/index.html?rev=573901&r1=573900&r2=573901&view=diff
==============================================================================
--- cocoon/site/site/2.0/developing/index.html (original)
+++ cocoon/site/site/2.0/developing/index.html Sat Sep 8 13:17:41 2007
@@ -1,158 +1,158 @@
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Developer Documentation</title>
-<STYLE type="text/css">
-a.menu {
- color: #FFFFFF;
- text-align:left;
- font-size:12px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:plain;
- text-decoration:none;
- padding-left: 14px
-}
-
-A.menu:hover {
- color: #FFCC00
-}
-
-
-.menutitle {
- color: #000000;
- text-align:left;
- font-size:10px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:bold;
- padding-left: 8px
-}
-.menuselected {
- color: #FFCC00;
- text-align:left;
- font-size:12px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:bold;
- padding-left: 14px
-}
-</STYLE>
-</head>
-<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
-</tr>
-<tr>
-<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">Developer Documentation</font></td>
-</tr>
-<tr>
-<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
-<table width="288" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr width="100%">
-<td align="left" valign="top" width="120">
-<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
-<tr>
-<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Concepts</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="parent-component-manager.html">Parent CM</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deli.html">DELI</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Webapps</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Java</span></td>
-</tr>
-<tr>
-<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
-</tr>
-<tr>
-<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-</table>
-</td><td>
-<table cellspacing="15" cellpadding="0" border="0">
-<tr>
-<td>
-
-
-
- <font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Overview</font>
-<hr style="color: #0086b2" size="1">
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Here will soon appear an overview of the developer perspective.
- </font>
-</p>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">If you are interested in developing real-world web-applications requiring
- form handling, authentication or even developing your own portal, have a
- look at the <a href="webapps/index.html">web application documentation</a>.</font>
-</p>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The actual developer documentation is available from the side-panel.
- </font>
-</p>
-
-
-
-
-
-</td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td bgcolor="#0086b2"><img width="1" src="images/dot.gif" height="1"></td>
-</tr>
-<tr>
-<td align="center"><font size="-1" face="arial,helvetica,sanserif" color="#0086b2"><i>Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.</i></font></td>
-</tr>
-</table>
-</body>
-</html>
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Developer Documentation</title>
+<STYLE type="text/css">
+a.menu {
+ color: #FFFFFF;
+ text-align:left;
+ font-size:12px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:plain;
+ text-decoration:none;
+ padding-left: 14px
+}
+
+A.menu:hover {
+ color: #FFCC00
+}
+
+
+.menutitle {
+ color: #000000;
+ text-align:left;
+ font-size:10px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:bold;
+ padding-left: 8px
+}
+.menuselected {
+ color: #FFCC00;
+ text-align:left;
+ font-size:12px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:bold;
+ padding-left: 14px
+}
+</STYLE>
+</head>
+<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
+</tr>
+<tr>
+<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">Developer Documentation</font></td>
+</tr>
+<tr>
+<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
+<table width="288" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%">
+<td align="left" valign="top" width="120">
+<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
+<tr>
+<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Concepts</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="parent-component-manager.html">Parent CM</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deli.html">DELI</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Webapps</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Java</span></td>
+</tr>
+<tr>
+<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
+</tr>
+<tr>
+<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+</table>
+</td><td>
+<table cellspacing="15" cellpadding="0" border="0">
+<tr>
+<td>
+
+
+
+ <font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Overview</font>
+<hr style="color: #0086b2" size="1">
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Here will soon appear an overview of the developer perspective.
+ </font>
+</p>
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">If you are interested in developing real-world web-applications requiring
+ form handling, authentication or even developing your own portal, have a
+ look at the <a href="webapps/index.html">web application documentation</a>.</font>
+</p>
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The actual developer documentation is available from the side-panel.
+ </font>
+</p>
+
+
+
+
+
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td bgcolor="#0086b2"><img width="1" src="images/dot.gif" height="1"></td>
+</tr>
+<tr>
+<td align="center"><font size="-1" face="arial,helvetica,sanserif" color="#0086b2"><i>Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.</i></font></td>
+</tr>
+</table>
+</body>
+</html>
Modified: cocoon/site/site/2.0/developing/parent-component-manager.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.0/developing/parent-component-manager.html?rev=573901&r1=573900&r2=573901&view=diff
==============================================================================
--- cocoon/site/site/2.0/developing/parent-component-manager.html (original)
+++ cocoon/site/site/2.0/developing/parent-component-manager.html Sat Sep 8 13:17:41 2007
@@ -1,461 +1,461 @@
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Parent Component Manager</title>
-<STYLE type="text/css">
-a.menu {
- color: #FFFFFF;
- text-align:left;
- font-size:12px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:plain;
- text-decoration:none;
- padding-left: 14px
-}
-
-A.menu:hover {
- color: #FFCC00
-}
-
-
-.menutitle {
- color: #000000;
- text-align:left;
- font-size:10px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:bold;
- padding-left: 8px
-}
-.menuselected {
- color: #FFCC00;
- text-align:left;
- font-size:12px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight:bold;
- padding-left: 14px
-}
-</STYLE>
-</head>
-<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
-</tr>
-<tr>
-<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">Parent Component Manager</font></td>
-</tr>
-<tr>
-<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
-<table width="288" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr width="100%">
-<td align="left" valign="top" width="120">
-<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
-<tr>
-<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Concepts</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><span class="menuselected">Parent CM</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deli.html">DELI</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Webapps</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Java</span></td>
-</tr>
-<tr>
-<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
-</tr>
-<tr>
-<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-</table>
-</td><td>
-<table cellspacing="15" cellpadding="0" border="0">
-<tr>
-<td>
-
-
- <font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Parent Component Manager</font>
-<hr style="color: #0086b2" size="1">
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">When using Apache Cocoon it is sometimes neccessary to obtain
- components from other sources than the <code><font face="courier, monospaced">user.roles</font></code> file,
- or preferable to have a common component manager for several web applications.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The pattern chosen for Cocoon is the dynamic loading of a component manager class.
- The initialization parameter parent-component-manager in web.xml specifies a class
- that will be loaded, instantiated and used as a parent component manager for
- Cocoon's component manager.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The recommended procedure is for the class, when it is initialized, to create a
- delegate in the form of an <code><font face="courier, monospaced">ExcaliburComponentManager</font></code>, configure it
- by looking up a <code><font face="courier, monospaced">Configuration</font></code> object via JNDI, and delegate any requests to it.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In order to provide a way to pass parameters to the parent component manager class
- (the class specified in parent-component-manager), Cocoon will instantiate the class
- via the constructor that takes a single <code><font face="courier, monospaced">String</font></code> argument, passing
- anything to the right of the first <code><font face="courier, monospaced">'/'</font></code> in the parameter value to the
- constructor. Subsequently Cocoon examines whether the class implements
- <code><font face="courier, monospaced">org.apache.avalon.framework.logger.Loggable</font></code> and/or
- <code><font face="courier, monospaced">org.apache.avalon.framework.activity.Initializable</font></code> and calls
- <code><font face="courier, monospaced">setLogger</font></code> and/or <code><font face="courier, monospaced">initialize</font></code>, as appropriate.
- The instance is then used as a parent component manager.
- </font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Since that didn't make much sense in itself, let's look at the sample.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The goal is to define a component that can give us the time of day and
- let it be managed by a parent component manager.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">So, first we need to put a Configuration object into JNDI, and then
- grab that object, use it to configure an ExcaliburComponentManager,
- and pass on any requests to that manager.</font>
-</p>
-
-
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 1: Creating a configuration object</b></font>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">We'll do this the quick and dirty way. The static initializer of a class
- will create a Configuration instance with a single role and bind it
- to <code><font face="courier, monospaced">org/apache/cocoon/samples/parentcm/ParentCMConfigration</font></code>.
- </font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The following code was taken from org/apache/cocoon/samples/parentcm/Configurator.java</font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-public class Configurator {
-
- static {
- try {
- //
- // Create a new role.
- //
- DefaultConfiguration config = new DefaultConfiguration("roles", "");
- DefaultConfiguration timeComponent = new DefaultConfiguration("role", "roles");
- timeComponent.addAttribute("name", Time.ROLE);
- timeComponent.addAttribute("default-class", TimeComponent.class.getName());
- timeComponent.addAttribute("shorthand", "samples-parentcm-time");
- config.addChild(timeComponent);
-
- //
- // Bind it - get an initial context.
- //
- Hashtable environment = new Hashtable();
- environment.put(Context.INITIAL_CONTEXT_FACTORY,
- MemoryInitialContextFactory.class.getName());
- initialContext = new InitialContext(environment);
-
- //
- // Create subcontexts and bind the configuration.
- //
- Context ctx = initialContext.createSubcontext("org");
- ctx = ctx.createSubcontext("apache");
- ctx = ctx.createSubcontext("cocoon");
- ctx = ctx.createSubcontext("samples");
- ctx = ctx.createSubcontext("parentcm");
- ctx.rebind("ParentCMConfiguration", config);
- } catch (Exception e) {
- e.printStackTrace(System.err);
- }
- }
-}</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">To make sure the static initializer runs we make Cocoon force-load the class
- by making a change to the web.xml file:</font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-<init-param>
- <param-name>load-class</param-name>
- <param-value>
- <!-- For IBM WebSphere:
- com.ibm.servlet.classloader.Handler -->
-
- <!-- For Database Driver: -->
- org.hsqldb.jdbcDriver
-
- <!-- For parent ComponentManager sample:
- This will cause the static initializer to run,
- and thus the Configuration object to be created
- and bound. -->
- org.apache.cocoon.samples.parentcm.Configurator
- </param-value>
-</init-param></pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 2: Write the component manager</b></font>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Now that the configuration object is sitting there waiting for us, let's craft
- the component manager. Please see the file org/apache/cocoon/samples/parentcm/ParentComponentManager.java
- for an example. It is too much to paste in here.</font>
-</p>
-
-
-
-
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 3: Tell Cocoon to use the component manager</b></font>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Change the web.xml file to:</font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-<init-param>
- <param-name>parent-component-manager</param-name>
- <param-value>org.apache.cocoon.samples.parentcm.ParentComponentManager/(remove this line break)
-org/apache/cocoon/samples/parentcm/ParentCMConfiguration</param-value>
-</init-param></pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Cocoon will now do the following: First, it will split the parameter value at the first slash,
- in this case ending up with the strings <code><font face="courier, monospaced">"org.apache.cocoon.samples.parentcm.ParentComponentManager"</font></code>
- and <code><font face="courier, monospaced">"org/apache/cocoon/samples/parentcm/ParentCMConfiguration"</font></code>. The first string is the
- class to instantiate. The second is the parameter that will be passed to the constructor.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Next, Cocoon loads the component manager class and uses reflection to find a constructor that
- will accept a single <code><font face="courier, monospaced">String</font></code> argument. Upon finding one, it instantiates the
- class in a manner similar to:</font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-ComponentManager cm = new
- org.apache.cocoon.samples.parentcm.ParentComponentManager(
- "org/apache/cocoon/samples/parentcm/ParentCMConfiguration");</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">
- After this Cocoon checks whether the parent component manager class implements <code><font face="courier, monospaced">Initializable</font></code> and/or
- <code><font face="courier, monospaced">Loggable</font></code>. Since the <code><font face="courier, monospaced">ParentComponentManager</font></code> class implements both, Cocoon
- does the following (with simplification):
- </font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-((Loggable) cm).setLogger(logger);
-((Initializable) cm).initialize();</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Finally, the instance is used as parent component manager of Cocoon's own component manager.</font>
-</p>
-
-
-
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 4: Use the component</b></font>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Cocoon components can now use the ComponentManager given to them by Cocoon to look up the
- component managed by the parent component manager:</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The following code was taken from org/apache/cocoon/samples/parentcm/Generator.java</font>
-</p>
-
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
- throws ProcessingException, SAXException, IOException {
-
- Time timeGiver = null;
- try {
- timeGiver = (Time) manager.lookup(Time.ROLE);
- this.time = timeGiver.getTime ();
- } catch (ComponentException ce) {
- throw new ProcessingException ("Could not obtain current time.", ce);
- } finally {
- manager.release(timeGiver);
- }
-}</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">And that concludes the tour. A parent component manager was initialized with a configuration
- obtained via JNDI and its components used by a Cocoon generator.</font>
-</p>
-
-
-
-</td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td bgcolor="#0086b2"><img width="1" src="images/dot.gif" height="1"></td>
-</tr>
-<tr>
-<td align="center"><font size="-1" face="arial,helvetica,sanserif" color="#0086b2"><i>Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.</i></font></td>
-</tr>
-</table>
-</body>
-</html>
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parent Component Manager</title>
+<STYLE type="text/css">
+a.menu {
+ color: #FFFFFF;
+ text-align:left;
+ font-size:12px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:plain;
+ text-decoration:none;
+ padding-left: 14px
+}
+
+A.menu:hover {
+ color: #FFCC00
+}
+
+
+.menutitle {
+ color: #000000;
+ text-align:left;
+ font-size:10px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:bold;
+ padding-left: 8px
+}
+.menuselected {
+ color: #FFCC00;
+ text-align:left;
+ font-size:12px;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-weight:bold;
+ padding-left: 14px
+}
+</STYLE>
+</head>
+<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
+</tr>
+<tr>
+<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">Parent Component Manager</font></td>
+</tr>
+<tr>
+<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
+<table width="288" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%">
+<td align="left" valign="top" width="120">
+<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
+<tr>
+<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Concepts</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><span class="menuselected">Parent CM</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deli.html">DELI</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Webapps</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Java</span></td>
+</tr>
+<tr>
+<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
+</tr>
+<tr>
+<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+</table>
+</td><td>
+<table cellspacing="15" cellpadding="0" border="0">
+<tr>
+<td>
+
+
+ <font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Parent Component Manager</font>
+<hr style="color: #0086b2" size="1">
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">When using Apache Cocoon it is sometimes neccessary to obtain
+ components from other sources than the <code><font face="courier, monospaced">user.roles</font></code> file,
+ or preferable to have a common component manager for several web applications.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The pattern chosen for Cocoon is the dynamic loading of a component manager class.
+ The initialization parameter parent-component-manager in web.xml specifies a class
+ that will be loaded, instantiated and used as a parent component manager for
+ Cocoon's component manager.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The recommended procedure is for the class, when it is initialized, to create a
+ delegate in the form of an <code><font face="courier, monospaced">ExcaliburComponentManager</font></code>, configure it
+ by looking up a <code><font face="courier, monospaced">Configuration</font></code> object via JNDI, and delegate any requests to it.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">In order to provide a way to pass parameters to the parent component manager class
+ (the class specified in parent-component-manager), Cocoon will instantiate the class
+ via the constructor that takes a single <code><font face="courier, monospaced">String</font></code> argument, passing
+ anything to the right of the first <code><font face="courier, monospaced">'/'</font></code> in the parameter value to the
+ constructor. Subsequently Cocoon examines whether the class implements
+ <code><font face="courier, monospaced">org.apache.avalon.framework.logger.Loggable</font></code> and/or
+ <code><font face="courier, monospaced">org.apache.avalon.framework.activity.Initializable</font></code> and calls
+ <code><font face="courier, monospaced">setLogger</font></code> and/or <code><font face="courier, monospaced">initialize</font></code>, as appropriate.
+ The instance is then used as a parent component manager.
+ </font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Since that didn't make much sense in itself, let's look at the sample.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The goal is to define a component that can give us the time of day and
+ let it be managed by a parent component manager.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">So, first we need to put a Configuration object into JNDI, and then
+ grab that object, use it to configure an ExcaliburComponentManager,
+ and pass on any requests to that manager.</font>
+</p>
+
+
+<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 1: Creating a configuration object</b></font>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">We'll do this the quick and dirty way. The static initializer of a class
+ will create a Configuration instance with a single role and bind it
+ to <code><font face="courier, monospaced">org/apache/cocoon/samples/parentcm/ParentCMConfigration</font></code>.
+ </font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The following code was taken from org/apache/cocoon/samples/parentcm/Configurator.java</font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+public class Configurator {
+
+ static {
+ try {
+ //
+ // Create a new role.
+ //
+ DefaultConfiguration config = new DefaultConfiguration("roles", "");
+ DefaultConfiguration timeComponent = new DefaultConfiguration("role", "roles");
+ timeComponent.addAttribute("name", Time.ROLE);
+ timeComponent.addAttribute("default-class", TimeComponent.class.getName());
+ timeComponent.addAttribute("shorthand", "samples-parentcm-time");
+ config.addChild(timeComponent);
+
+ //
+ // Bind it - get an initial context.
+ //
+ Hashtable environment = new Hashtable();
+ environment.put(Context.INITIAL_CONTEXT_FACTORY,
+ MemoryInitialContextFactory.class.getName());
+ initialContext = new InitialContext(environment);
+
+ //
+ // Create subcontexts and bind the configuration.
+ //
+ Context ctx = initialContext.createSubcontext("org");
+ ctx = ctx.createSubcontext("apache");
+ ctx = ctx.createSubcontext("cocoon");
+ ctx = ctx.createSubcontext("samples");
+ ctx = ctx.createSubcontext("parentcm");
+ ctx.rebind("ParentCMConfiguration", config);
+ } catch (Exception e) {
+ e.printStackTrace(System.err);
+ }
+ }
+}</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">To make sure the static initializer runs we make Cocoon force-load the class
+ by making a change to the web.xml file:</font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+<init-param>
+ <param-name>load-class</param-name>
+ <param-value>
+ <!-- For IBM WebSphere:
+ com.ibm.servlet.classloader.Handler -->
+
+ <!-- For Database Driver: -->
+ org.hsqldb.jdbcDriver
+
+ <!-- For parent ComponentManager sample:
+ This will cause the static initializer to run,
+ and thus the Configuration object to be created
+ and bound. -->
+ org.apache.cocoon.samples.parentcm.Configurator
+ </param-value>
+</init-param></pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+
+<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 2: Write the component manager</b></font>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Now that the configuration object is sitting there waiting for us, let's craft
+ the component manager. Please see the file org/apache/cocoon/samples/parentcm/ParentComponentManager.java
+ for an example. It is too much to paste in here.</font>
+</p>
+
+
+
+
+<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 3: Tell Cocoon to use the component manager</b></font>
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Change the web.xml file to:</font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+<init-param>
+ <param-name>parent-component-manager</param-name>
+ <param-value>org.apache.cocoon.samples.parentcm.ParentComponentManager/(remove this line break)
+org/apache/cocoon/samples/parentcm/ParentCMConfiguration</param-value>
+</init-param></pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Cocoon will now do the following: First, it will split the parameter value at the first slash,
+ in this case ending up with the strings <code><font face="courier, monospaced">"org.apache.cocoon.samples.parentcm.ParentComponentManager"</font></code>
+ and <code><font face="courier, monospaced">"org/apache/cocoon/samples/parentcm/ParentCMConfiguration"</font></code>. The first string is the
+ class to instantiate. The second is the parameter that will be passed to the constructor.</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Next, Cocoon loads the component manager class and uses reflection to find a constructor that
+ will accept a single <code><font face="courier, monospaced">String</font></code> argument. Upon finding one, it instantiates the
+ class in a manner similar to:</font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+ComponentManager cm = new
+ org.apache.cocoon.samples.parentcm.ParentComponentManager(
+ "org/apache/cocoon/samples/parentcm/ParentCMConfiguration");</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">
+ After this Cocoon checks whether the parent component manager class implements <code><font face="courier, monospaced">Initializable</font></code> and/or
+ <code><font face="courier, monospaced">Loggable</font></code>. Since the <code><font face="courier, monospaced">ParentComponentManager</font></code> class implements both, Cocoon
+ does the following (with simplification):
+ </font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+((Loggable) cm).setLogger(logger);
+((Initializable) cm).initialize();</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Finally, the instance is used as parent component manager of Cocoon's own component manager.</font>
+</p>
+
+
+
+<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Step 4: Use the component</b></font>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Cocoon components can now use the ComponentManager given to them by Cocoon to look up the
+ component managed by the parent component manager:</font>
+</p>
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The following code was taken from org/apache/cocoon/samples/parentcm/Generator.java</font>
+</p>
+
+
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
+ throws ProcessingException, SAXException, IOException {
+
+ Time timeGiver = null;
+ try {
+ timeGiver = (Time) manager.lookup(Time.ROLE);
+ this.time = timeGiver.getTime ();
+ } catch (ComponentException ce) {
+ throw new ProcessingException ("Could not obtain current time.", ce);
+ } finally {
+ manager.release(timeGiver);
+ }
+}</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+
+
+
+<p>
+<font color="black" face="verdana,helvetica,sanserif">And that concludes the tour. A parent component manager was initialized with a configuration
+ obtained via JNDI and its components used by a Cocoon generator.</font>
+</p>
+
+
+
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td bgcolor="#0086b2"><img width="1" src="images/dot.gif" height="1"></td>
+</tr>
+<tr>
+<td align="center"><font size="-1" face="arial,helvetica,sanserif" color="#0086b2"><i>Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.</i></font></td>
+</tr>
+</table>
+</body>
+</html>