jmacna 2003/11/12 16:03:53
Added: targets/wsrp4j/arch arch.pdf consumer.html consumer.pdf arch.html producer.html producer.pdf Log: Forrestized web site -- initial verison Revision Changes Path 1.1 ws-site/targets/wsrp4j/arch/arch.pdf <<Binary file>> 1.1 ws-site/targets/wsrp4j/arch/consumer.html Index: consumer.html =================================================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--*** This is a generated file. Do not edit. ***--> <link rel="stylesheet" href="../skin/tigris.css" type="text/css"> <link rel="stylesheet" href="../skin/mysite.css" type="text/css"> <link rel="stylesheet" href="../skin/site.css" type="text/css"> <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> <title>WSRP Consumer Architecture</title> </head> <body bgcolor="white" class="composite"> <!--================= start Banner ==================--> <div id="banner"> <table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> <tbody> <tr> <!--================= start Group Logo ==================--> <td align="left"> <div class="groupLogo"> <a href="http://ws.apache.org"><img border="0" class="logoImage" alt="Web Services" src="../images/group-logo.gif"></a> </div> </td> <!--================= end Group Logo ==================--> <!--================= start Project Logo ==================--><td align="right"> <div class="projectLogo"> <a href="http://ws.apache.org/wsrp4j/"><img border="0" class="logoImage" alt="WSRP4J" src="../images/wsrp4j-logo-big.png"></a> </div> </td> <!--================= end Project Logo ==================--> <!--================= start Search ==================--><td valign="top" rowspan="2" align="right" class="search"> <form target="_blank" action="http://www.google.com/search" method="get"> <table summary="search" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="8" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="Search" type="submit"> <br> Search WSRP4J</td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> </tr> </table> </form> </td> <!--================= end Search ==================--> </tr> </tbody> </table> </div> <!--================= end Banner ==================--> <!--================= start Main ==================--> <table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> <tbody> <!--================= start Status ==================--> <tr class="status"> <td> <!--================= start BreadCrumb ==================--><a href="http://apache.org">Apache</a> | <a href="http://ws.apache.org/">Web Services</a> | <a href="http://ws.apache.org/wsrp4j/">WSRP4J</a> <!--================= end BreadCrumb ==================--></td><td id="tabs"> <!--================= start Tabs ==================--> <div class="tab"> <span class="unselectedTab"><a href="../index.html">Home</a></span> | <span class="selectedTab"><a class="base-selected" href="../arch/arch.html">Architecture</a></span> | <a title="PDF file of this page" href="consumer.pdf">PDF</a> </div> <!--================= end Tabs ==================--> </td> </tr> </tbody> </table> <!--================= end Status ==================--> <table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> <tbody> <tr valign="top"> <!--================= start Menu ==================--> <td id="leftcol"> <div id="navcolumn"> <div class="menuBar"> <div class="menu"> <span class="menuLabel">Architecture</span> <div class="menuItem"> <a href="../arch/arch.html" title="Architecture Overview">Overview</a> </div> <div class="menuItem"> <span class="menuSelected">Consumer</span> </div> <div class="menuItem"> <a href="../arch/producer.html" title="Architecture of WSRP Producer">Producer</a> </div> </div> </div> </div> </td> <!--================= end Menu ==================--> <!--================= start Content ==================--><td> <div id="bodycol"> <div class="app"> <div align="center"> <h1>WSRP Consumer Architecture</h1> </div> <div class="h3"> <p> The Producer and Consumer are provided with a very modular architecture enabling an easy exchange of module implementations. All modules excel by interfaces based on the WSRP object model hiding the portal's object model and thus gaining independence of changes in the portal implementation or design. </p> <div align="center"> <img class="figure" alt="Consumer Architecture" src="../images/consumer_architecture.jpg"></div> <div class="h3"> <h3>Protocol Handler</h3> </div> <p> The Protocol Handler is a standalone Swing based application that implements the consuming portal and the browser functionality. It aggregates the integrated WSRP portlets and forwards all invocations together with relevant context and request information to the remote WSRP service. The Swing consumer thereby uses the ConsumerEnvironment to collect all data required for a WSRP call. </p> <div class="h3"> <h3>WSRP Object Model </h3> </div> <p> Most of the WSRP object model is being generated from the WSRP specification's WSDL types. </p> <div class="h3"> <h3>PortletDriver </h3> </div> <p> The PortletDriver is the task oriented abstraction of the generated WSRP stubs for markup and action invocation. </p> <p> The PortletDriver is the task oriented abstraction of the generated WSRP stubs for markup and action invocation. </p> <div class="h3"> <h3>WSRP service (stubs) () </h3> </div> <p> The stubs generated by the axis SOAP implementation. The stubs are also implementing the cookie handling - for more details see SessionHandler below. </p> <div class="h3"> <h3>ProducerRegistry </h3> </div> <p> The ProducerRegistry stores and manages details about producer portals from which portlets were integrated or shall be integrated. </p> <div class="h3"> <h3>SessionHandler </h3> </div> <p> The WSRP consumer implementation session handling is based on the SOAP stack's session handling. The generated SOAP stubs are doing the cookie handling and are caching the cookies in instance variables. This means that one stub object instance is equivalent to one HTTP session which we map to one WSRP session (initCookie wise). When a WSRP session did time out an InvalidCookie exception is being thrown and a new session must be established. </p> <div class="h3"> <h3>URLHandler </h3> </div> <p> The URLHandler is responsible for the URL rewriting of the WSRP URLs embedded in the markup received from the remote portlet. </p> <div class="h3"> <h3>PortletRegistry </h3> </div> <p> The PortletRegistry stores and provides access to WSRP specific data and descriptions of a remote Portlet. </p> <div class="h3"> <h3>UserRegistry </h3> </div> <p> The UserRegistry is in the Swing consumer case very simplistic. As the browser is integrated there is always only one "dummy" user being managed. </p> <div id="pdf" align="right"> <a href="consumer.pdf"><img alt="PDF" src="../skin/images/pdfdoc.gif" class="skin"><br> PDF</a> </div> </div> </div> </div> </td> <!--================= end Content ==================--> </tr> </tbody> </table> <!--================= end Main ==================--> <!--================= start Footer ==================--> <div id="footer"> <table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> <tbody> <tr> <!--================= start Copyright ==================--> <td colspan="2"> <div align="center"> <div class="copyright"> Copyright © 2003 The Apache Software Foundation.. All rights reserved. </div> </div> </td> <!--================= end Copyright ==================--> </tr> <tr> <td align="left"> <!--================= start Host ==================--> <div align="left"> <div class="host"> <a href="http://apache.org"><img border="0" class="logoImage" alt="" src="../images/icon.png"></a> </div> </div> <!--================= end Host ==================--> </td><td align="right"> <!--================= start Credits ==================--> <div align="right"> <div class="credit"></div> </div> <!--================= end Credits ==================--> </td> </tr> </tbody> </table> </div> <!--================= end Footer ==================--> </body> </html> 1.1 ws-site/targets/wsrp4j/arch/consumer.pdf <<Binary file>> 1.1 ws-site/targets/wsrp4j/arch/arch.html Index: arch.html =================================================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--*** This is a generated file. Do not edit. ***--> <link rel="stylesheet" href="../skin/tigris.css" type="text/css"> <link rel="stylesheet" href="../skin/mysite.css" type="text/css"> <link rel="stylesheet" href="../skin/site.css" type="text/css"> <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> <title>WSRP Architecture</title> </head> <body bgcolor="white" class="composite"> <!--================= start Banner ==================--> <div id="banner"> <table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> <tbody> <tr> <!--================= start Group Logo ==================--> <td align="left"> <div class="groupLogo"> <a href="http://ws.apache.org"><img border="0" class="logoImage" alt="Web Services" src="../images/group-logo.gif"></a> </div> </td> <!--================= end Group Logo ==================--> <!--================= start Project Logo ==================--><td align="right"> <div class="projectLogo"> <a href="http://ws.apache.org/wsrp4j/"><img border="0" class="logoImage" alt="WSRP4J" src="../images/wsrp4j-logo-big.png"></a> </div> </td> <!--================= end Project Logo ==================--> <!--================= start Search ==================--><td valign="top" rowspan="2" align="right" class="search"> <form target="_blank" action="http://www.google.com/search" method="get"> <table summary="search" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="8" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="Search" type="submit"> <br> Search WSRP4J</td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> </tr> </table> </form> </td> <!--================= end Search ==================--> </tr> </tbody> </table> </div> <!--================= end Banner ==================--> <!--================= start Main ==================--> <table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> <tbody> <!--================= start Status ==================--> <tr class="status"> <td> <!--================= start BreadCrumb ==================--><a href="http://apache.org">Apache</a> | <a href="http://ws.apache.org/">Web Services</a> | <a href="http://ws.apache.org/wsrp4j/">WSRP4J</a> <!--================= end BreadCrumb ==================--></td><td id="tabs"> <!--================= start Tabs ==================--> <div class="tab"> <span class="unselectedTab"><a href="../index.html">Home</a></span> | <span class="selectedTab"><a class="base-selected" href="../arch/arch.html">Architecture</a></span> | <a title="PDF file of this page" href="arch.pdf">PDF</a> </div> <!--================= end Tabs ==================--> </td> </tr> </tbody> </table> <!--================= end Status ==================--> <table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> <tbody> <tr valign="top"> <!--================= start Menu ==================--> <td id="leftcol"> <div id="navcolumn"> <div class="menuBar"> <div class="menu"> <span class="menuLabel">Architecture</span> <div class="menuItem"> <span class="menuSelected">Overview</span> </div> <div class="menuItem"> <a href="../arch/consumer.html" title="Architecture of WSRP Consumer">Consumer</a> </div> <div class="menuItem"> <a href="../arch/producer.html" title="Architecture of WSRP Producer">Producer</a> </div> </div> </div> </div> </td> <!--================= end Menu ==================--> <!--================= start Content ==================--><td> <div id="bodycol"> <div class="app"> <div align="center"> <h1>WSRP Architecture</h1> </div> <div class="h3"> <p> The <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp">OASIS WSRP</a> standard defines pluggable, user-facing, interactive web services with a common, well-defined interface and protocol for processing user interactions and providing presentation fragments suitably for aggregation by portals. WSRP standardizes web services at the presentation layer on top of the existing web services stack, builds on the existing web services standards and will leverage additional web services standards efforts, such as security efforts now underway, as they become available. The WSRP interfaces are defined in the Web Services Description Language (WSDL). In addition, WSRP defines metadata for self-description for publishing and finding WSRP services in registries. All WSRP services are required to implement a SOAP binding and optionally may support additional bindings. </p> <p> In the definition of the WSRP standard and the <a href="http://www.jcp.org/en/jsr/detail?id=168">JSR 168</a>, the OASIS Technical Committee and the JSR 168 Expert group have closely collaborated to make sure that that both fit together well in portal architectures. JSR 168 compliant portlets can be exposed as WSRP compliant web services and conversely, WSRP services can be integrated through generic portlet proxies written to the Portlet API (see Figure below). </p> <div align="center"> <img class="figure" alt="Portal Overview" src="../images/WSRPArch1.png"></div> <p> The WSRP4J project provides the WSRP4J Producer, which allows implementing such WSRP compliant services based on a free, open source software stack consisting of Tomcat, Axis and WSRP4J which in turn includes Pluto, the JSR 168 reference implementation. In addition, the WSRP4J project provides a generic proxy portlet written to the Portlet API, the WSRP4J Consumer (see Figure below). </p> <div align="center"> <img class="figure" alt="WSRP4J Components" src="../images/WSRPArch2.png"></div> <div id="pdf" align="right"> <a href="arch.pdf"><img alt="PDF" src="../skin/images/pdfdoc.gif" class="skin"><br> PDF</a> </div> </div> </div> </div> </td> <!--================= end Content ==================--> </tr> </tbody> </table> <!--================= end Main ==================--> <!--================= start Footer ==================--> <div id="footer"> <table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> <tbody> <tr> <!--================= start Copyright ==================--> <td colspan="2"> <div align="center"> <div class="copyright"> Copyright © 2003 The Apache Software Foundation.. All rights reserved. </div> </div> </td> <!--================= end Copyright ==================--> </tr> <tr> <td align="left"> <!--================= start Host ==================--> <div align="left"> <div class="host"> <a href="http://apache.org"><img border="0" class="logoImage" alt="" src="../images/icon.png"></a> </div> </div> <!--================= end Host ==================--> </td><td align="right"> <!--================= start Credits ==================--> <div align="right"> <div class="credit"></div> </div> <!--================= end Credits ==================--> </td> </tr> </tbody> </table> </div> <!--================= end Footer ==================--> </body> </html> 1.1 ws-site/targets/wsrp4j/arch/producer.html Index: producer.html =================================================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--*** This is a generated file. Do not edit. ***--> <link rel="stylesheet" href="../skin/tigris.css" type="text/css"> <link rel="stylesheet" href="../skin/mysite.css" type="text/css"> <link rel="stylesheet" href="../skin/site.css" type="text/css"> <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css"> <title>WSRP Producer Architecture</title> </head> <body bgcolor="white" class="composite"> <!--================= start Banner ==================--> <div id="banner"> <table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0"> <tbody> <tr> <!--================= start Group Logo ==================--> <td align="left"> <div class="groupLogo"> <a href="http://ws.apache.org"><img border="0" class="logoImage" alt="Web Services" src="../images/group-logo.gif"></a> </div> </td> <!--================= end Group Logo ==================--> <!--================= start Project Logo ==================--><td align="right"> <div class="projectLogo"> <a href="http://ws.apache.org/wsrp4j/"><img border="0" class="logoImage" alt="WSRP4J" src="../images/wsrp4j-logo-big.png"></a> </div> </td> <!--================= end Project Logo ==================--> <!--================= start Search ==================--><td valign="top" rowspan="2" align="right" class="search"> <form target="_blank" action="http://www.google.com/search" method="get"> <table summary="search" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="8" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../skin/images/spacer.gif" class="spacer"><input name="Search" value="Search" type="submit"> <br> Search WSRP4J</td><td><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td colspan="3"><img height="7" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td> </tr> <tr> <td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td> </tr> </table> </form> </td> <!--================= end Search ==================--> </tr> </tbody> </table> </div> <!--================= end Banner ==================--> <!--================= start Main ==================--> <table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs"> <tbody> <!--================= start Status ==================--> <tr class="status"> <td> <!--================= start BreadCrumb ==================--><a href="http://apache.org">Apache</a> | <a href="http://ws.apache.org/">Web Services</a> | <a href="http://ws.apache.org/wsrp4j/">WSRP4J</a> <!--================= end BreadCrumb ==================--></td><td id="tabs"> <!--================= start Tabs ==================--> <div class="tab"> <span class="unselectedTab"><a href="../index.html">Home</a></span> | <span class="selectedTab"><a class="base-selected" href="../arch/arch.html">Architecture</a></span> | <a title="PDF file of this page" href="producer.pdf">PDF</a> </div> <!--================= end Tabs ==================--> </td> </tr> </tbody> </table> <!--================= end Status ==================--> <table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0"> <tbody> <tr valign="top"> <!--================= start Menu ==================--> <td id="leftcol"> <div id="navcolumn"> <div class="menuBar"> <div class="menu"> <span class="menuLabel">Architecture</span> <div class="menuItem"> <a href="../arch/arch.html" title="Architecture Overview">Overview</a> </div> <div class="menuItem"> <a href="../arch/consumer.html" title="Architecture of WSRP Consumer">Consumer</a> </div> <div class="menuItem"> <span class="menuSelected">Producer</span> </div> </div> </div> </div> </td> <!--================= end Menu ==================--> <!--================= start Content ==================--><td> <div id="bodycol"> <div class="app"> <div align="center"> <h1>WSRP Producer Architecture</h1> </div> <div class="h3"> <p> Producer and consumer are provided with a very modular architecture enabling an easy exchange of module implementations. All modules excel by interfaces based on the WSRP object model hiding the runtime environment's (portal's) object model and thus gaining independence of changes in the environment's implementation or design. </p> <div align="center"> <img class="figure" alt="WSRP Producer Architecture" src="../images/producer_architecture.jpg"></div> <div class="h3"> <h3>WSRPEngine</h3> </div> <p> The WSRPEngine is the WSRP implementation endpoint. This class must be deployed in the app server (Tomcat) as a web service. The WSRPEngine implements the WSRP protocol specific ports (=interfaces) and does the corresponding protocol handling. There are four WSRP ports: </p> <dl> <dt>Markup</dt> <dd>deals with Portlet invocation and Session handling</dd> <dt>PortletManagement</dt> <dd>covers lifecycle and properties of portlets</dd> <dt>Registration</dt> <dd>enables a consumer to register at the producer</dd> <dt>ServiceDescription</dt> <dd>enables a consumer to discover the services that a producer provides</dd> </dl> <div class="frame note"> <div class="label">Note</div> <div class="content"> To be able to reuse Portal functionality regarding session and request handling when invoking a portlet the WSRPEngine must be able to access the HttpServletRequest. </div> </div> <div class="h3"> <h3>ConsumerRegistry</h3> </div> <p> This component manages and provides access to the registered Consumers. </p> <div class="h3"> <h3>HandleGenerator</h3> </div> <p> This component is responsible for generating IDs / handles required for the WSRP protocol handling. </p> <div class="h3"> <h3>WSRP Object Model</h3> </div> <p> The WSRP object model is being generated from the WSRP specification's WSDL types. </p> <div class="h3"> <h3>Provider</h3> </div> <p> The Provider is the access point for the WSRPEngine to the Provider components which hide the provider (portal) implementation's components required to handle and invoke portlets. All Subcomponents wrap corresponding provider components and map the WSRP object model to the provider object model. </p> <div class="h3"> <h3>Portlet Invoker</h3> </div> <p> The PortletInvoker wraps the Provider's invocation mechanisms and provides the Provider with the required environment. </p> <div class="h3"> <h3>Description Handler</h3> </div> <p> The DescriptionHandler manages and provides the description of the provider regarding configuration properties like registration or session handling policy, etc. It moreover provides the descriptions of the provided portlets depending on the registration. </p> <div class="h3"> <h3>PortletPool</h3> </div> <p> The PortletPool manages the portlet instances and is responsible for the portlets' lifecycle management (clone, destroy). </p> <div class="h3"> <h3>Portlet State Manager</h3> </div> <p> The PortletStateMananger enables a Producer to access a portlet's state as a blob that than can be delegate to the consumer to be stored on consumer side. </p> <div class="h3"> <h3>Session Handler</h3> </div> <p> No additional session handling implementation for the Pluto provider is required as the session handling concept is completely HTTP (cookie) based and relies on consumer' cookie handling. </p> <div class="h3"> <h3>URL Composer</h3> </div> <p> The URLComposer must be used for WSRP triggered portlet invocation to create WSRP URLs instead of the portal's URL handling implementation. Therefore the URLComposer is being used by WSRP's version of the DynamicInformationProvider which is being used by the Portlet API implementation to generate portlet URLs. There are two ways how URLs can be composed in a WSRP environment: </p> <ol> <li> Via templates that represent URLs that are valid on Consumer side and contain placeholders for all portlet specific URL components. </li> <li> Via URL rewriting. In that case WSRP specific URLs are being composed that will have to be rewritten by the Consumer. </li> </ol> <div id="pdf" align="right"> <a href="producer.pdf"><img alt="PDF" src="../skin/images/pdfdoc.gif" class="skin"><br> PDF</a> </div> </div> </div> </div> </td> <!--================= end Content ==================--> </tr> </tbody> </table> <!--================= end Main ==================--> <!--================= start Footer ==================--> <div id="footer"> <table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0"> <tbody> <tr> <!--================= start Copyright ==================--> <td colspan="2"> <div align="center"> <div class="copyright"> Copyright © 2003 The Apache Software Foundation.. All rights reserved. </div> </div> </td> <!--================= end Copyright ==================--> </tr> <tr> <td align="left"> <!--================= start Host ==================--> <div align="left"> <div class="host"> <a href="http://apache.org"><img border="0" class="logoImage" alt="" src="../images/icon.png"></a> </div> </div> <!--================= end Host ==================--> </td><td align="right"> <!--================= start Credits ==================--> <div align="right"> <div class="credit"></div> </div> <!--================= end Credits ==================--> </td> </tr> </tbody> </table> </div> <!--================= end Footer ==================--> </body> </html> 1.1 ws-site/targets/wsrp4j/arch/producer.pdf <<Binary file>>