directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: r106796 - in incubator/directory/eve/trunk/xdocs: . images
Date Sun, 28 Nov 2004 07:57:11 GMT
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="akarasulu@apache.org">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"/>

Mime
View raw message