Author: akarasulu Date: Sat Nov 27 23:57:10 2004 New Revision: 106796 URL: http://svn.apache.org/viewcvs?view=rev&rev=106796 Log: finish off the architecture document Added: incubator/directory/eve/trunk/xdocs/architecture.xml incubator/directory/eve/trunk/xdocs/images/architecture.png (contents, props changed) Modified: incubator/directory/eve/trunk/xdocs/building.xml incubator/directory/eve/trunk/xdocs/index.xml incubator/directory/eve/trunk/xdocs/navigation.xml
Added: incubator/directory/eve/trunk/xdocs/architecture.xml Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/architecture.xml?view=auto&rev=106796 ============================================================================== --- (empty file) +++ incubator/directory/eve/trunk/xdocs/architecture.xml Sat Nov 27 23:57:10 2004 @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document> + <properties> + <author email="[EMAIL PROTECTED]">Alex Karasulu</author> + <title>High Level Architecture</title> + </properties> + + <body> + <section name="High Level Architecture"> + <subsection name="A picture is worth a thousand words!"> + <img src="./images/architecture.png"/> + + <p> + Eve is actually composed of two separable subsystems: the LDAP protocol + provider within the SEDA framework and the Eve JNDI provider (a.k.a. + the backend subsystem). + </p> + + <p> + Below we touch breifly on each major subsystem however a more detailed + presentation is available describing Eve's architecture. It was an + ApacheCon presentation in 04 and is available +<a href="https://karasulu.homeip.net/svn/akarasulu/apachecon/eve-presentation/eve-intro-long.ppt">here</a>. + </p> + </subsection> + + <subsection name="LDAP Protocol Provider"> + <p> + The LDAP protocol provider is an implementation of the SEDA protocol + provider interface. SEDA implements a provider architecture where + protocols snap into the framework like legos to service protocol + requests. A SEDA provider has no relation to a JNDI provider. Note + it can get confusing when talking about providers for SEDA or for + JNDI so we try our best to qualify which we refer to explicitly. + </p> + + <p> + Other protocol providers may be added to a SEDA instance to service + multiple protocols on their respective service ports to share the same + plumbing. In the picture above we show the Kerberos SEDA provider + we've implemented along side the LDAP SEDA provider + </p> + + <p> + The LDAP protocol provider contains request handlers for each LDAP + request PDU type. These handlers translate LDAP requests into + operations against an LDAP JNDI provider. This LDAP JNDI provider by + default is the Eve JNDI provider. However the JNDI provider can be + switched using environment properties to use the SUN LDAP JNDI + provider. When using the SUN JNDI Provider the SEDA protocol provider + becomes an LDAP proxy server. + </p> + + <p> + The LDAP protocol provider is extremely simple yet powerful. It + merely acts as an LDAP request PDU to JNDI operation transducer. On + the wire LDAP requests trigger calls against JNDI contexts through + handlers. + </p> + </subsection> + + <subsection name="Eve JNDI Provider"> + <p> + The heart of the server resides within the backend subsystem or the + Eve JNDI provider. The Eve JNDI provider is a JNDI provider for the + LDAP namespace. However this provider does not talk LDAP on the wire, + it effects the internal backing stores of Eve directly. One can think + of the Eve JNDI Provider as the server side JNDI provider. + </p> + + <p> + Fundamentally JNDI is used as the facade to the entire backend + subsystem. JNDI interfaces are used to operated upon Eve backing + stores this way. JNDI also serves as the integration API for + embedding Eve. The EveContextFactory starts up the backend subsystem + as well as the networking code when the first initial context is + requested. All other contexts do not incur startup costs. This + unique use of JNDI enables code to simply switch JNDI providers to + embed Eve. It also makes data access code in stored procedures that + uses JNDI capable of running inside and outside of the server which + makes testing really easy. + </p> + + <p> + Eve's backend subsystem contains most of the guts of the server. We + want functionality like replication or triggers to be present + regardless of whether Eve is in standalone mode or embedded within + another application. Hence keeping it within the backend made sense. + </p> + + <p> + Eve contains backing stores to store LDAP entries which really are + serialized javax.naming.directory.Attributes objects. These entries + live within database partitions attached to a naming context. All + entries within these contexts are contained within the partition + assigned to it. Several partitions can be present within the same + Eve instance. Operations against contexts are routed by a Nexus + based on the name (DN) of the entry associated with the operation. + </p> + + <p> + JNDI contexts hence translate relative operations to distinguished + operations against the Nexus which routes these calls to the + respective partition to add, delete, modify, search or move around + entries. Between calls from JNDI Contexts to the RootNexus an + interceptor framework intervenes to inject services like replication, + authorization and more. + </p> + </subsection> + + </section> + + </body> +</document> Modified: incubator/directory/eve/trunk/xdocs/building.xml Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/building.xml?view=diff&rev=106796&p1=incubator/directory/eve/trunk/xdocs/building.xml&r1=106795&p2=incubator/directory/eve/trunk/xdocs/building.xml&r2=106796 ============================================================================== --- incubator/directory/eve/trunk/xdocs/building.xml (original) +++ incubator/directory/eve/trunk/xdocs/building.xml Sat Nov 27 23:57:10 2004 @@ -6,37 +6,52 @@ </properties> <body> - <section name="TODO"> - <ul> - <li> - Describe Maven based build and use of POM extension with reactor. - </li> - - <li> - Describe the organization of projects from the POV of the POM. - </li> - - <li> - Discuss use of a component documentation plugin that uses our - layout and some container information to automatically generate - component documentation. - </li> - - <li> - Document goals in maven.xml and what they do. - </li> - - <li> - Discuss per project document generation and how that integrates with - subproject documents. - </li> - </ul> + <section name="Building Eve"> + <p> + All directory projects use <a href="http://maven.apache.org">Maven</a> + as the default build tool. We try to remain current with the production + version of Maven. As of 11/04 we use Maven 1.0.1 on JDK 1.4 and up. + </p> + + <p> + The multiproject plugin is used to build Eve. After checking out the + Eve trunk from subversion, cd into it and run the following multiproject + command: + </p> + + <source> + maven -Dgoal=clean,jar:jar multiproject:goal + </source> </section> - <section name="Building Eve"> + <section name="Eve's Maven Modules"> <p> - Coming soon ... + Eve is composed of 4 separate maven projects. These projects are + summarized below: </p> + + <table> + <tr> + <th>Project</th><th>Summary</th> + </tr> + + <tr> + <td>protocol</td> + <td>Contains an LDAP protocol provider for the SEDA framework.</td> + </tr> + <tr> + <td>maven-eve-plugin</td> + <td>Contains a maven plugin used while developing with/for Eve.</td> + </tr> + <tr> + <td>jndi-provider</td> + <td>Contains Eve's JNDI Provider which wraps/is the backend subsystem.</td> + </tr> + <tr> + <td>shared</td> + <td>Contains shared classes between modules to prevent cyclic deps.</td> + </tr> + </table> </section> </body> </document> Added: incubator/directory/eve/trunk/xdocs/images/architecture.png Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/images/architecture.png?view=auto&rev=106796 ============================================================================== Binary file. No diff available. Modified: incubator/directory/eve/trunk/xdocs/index.xml Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/index.xml?view=diff&rev=106796&p1=incubator/directory/eve/trunk/xdocs/index.xml&r1=106795&p2=incubator/directory/eve/trunk/xdocs/index.xml&r2=106796 ============================================================================== --- incubator/directory/eve/trunk/xdocs/index.xml (original) +++ incubator/directory/eve/trunk/xdocs/index.xml Sat Nov 27 23:57:10 2004 @@ -26,7 +26,7 @@ <a href="./features.html">Features</a> </td> <td> - Eve's existing and planned features + Discusses existing and planned features. </td> </tr> @@ -35,9 +35,7 @@ <a href="./building.html">Building</a> </td> <td> - Describes how to build Eve from the source. Should be real simple - thanks to Maven. But this should go off on how the build is - structured as well for developers. + Describes how to build Eve from the source. </td> </tr> @@ -55,16 +53,16 @@ <a href="./roadmap.html">Roadmap</a> </td> <td> - A roadmap for Eve development + A roadmap for Eve development. </td> </tr> <tr> <td> - <a href="https://karasulu.homeip.net/svn/akarasulu/apachecon/eve-presentation/eve-intro-long.ppt">Architecture</a> + <a href="./architecture.html">Architecture</a> </td> <td> - An ApacheCon presentation showing in detail Eve's architecture. + Eve's architecture at a high level. </td> </tr> @@ -73,8 +71,7 @@ <a href="./components.html">Components</a> </td> <td> - Eve is a system made up of several components. Some aspects - associated with Eve's component based design are discussed here. + Discusses component based design in Eve. </td> </tr> @@ -83,17 +80,16 @@ <a href="./protocol.html">Protocol</a> </td> <td> - Documentation regarding Eve's frontend protocol subsystem. + Documentation for the LDAP protocol provider. </td> </tr> <tr> <td> - <a href="./jndi.html">Eve JNDI</a> + <a href="./jndi.html">JNDI</a> </td> <td> - Documentation regarding Eve's backend subsystem which is a JNDI - provider. + Documentation for Eve's JNDI provider. </td> </tr> Modified: incubator/directory/eve/trunk/xdocs/navigation.xml Url: http://svn.apache.org/viewcvs/incubator/directory/eve/trunk/xdocs/navigation.xml?view=diff&rev=106796&p1=incubator/directory/eve/trunk/xdocs/navigation.xml&r1=106795&p2=incubator/directory/eve/trunk/xdocs/navigation.xml&r2=106796 ============================================================================== --- incubator/directory/eve/trunk/xdocs/navigation.xml (original) +++ incubator/directory/eve/trunk/xdocs/navigation.xml Sat Nov 27 23:57:10 2004 @@ -23,7 +23,7 @@ <item name="Building" href="/building.html"/> <item name="User's Guide" href="/users-guide.html"/> <item name="Roadmap" href="/roadmap.html"/> - <item name="Architecture" href="https://karasulu.homeip.net/svn/akarasulu/apachecon/eve-presentation/eve-intro-long.ppt"/> + <item name="Architecture" href="./architecture.html"/> <item name="Components" href="/components.html"/> <item name="Protocol" href="/protocol.html"/> <item name="JNDI" href="/jndi.html"/>
