<?xml version="1.0" encoding="UTF-8"?>
<document>
 <properties>
  <title>ApacheDS Modules</title>
 </properties>
 <body>
  <section name="ApacheDS Modules">
   <p>ApacheDS is composed of several modules. Here is the list of them with brief descriptions:</p>
   <table>
    <tr><th>Name</th><th>Description</th></tr>
    <tr> <td>ApacheDS Core</td> <td>Server's core contains the JNDI provider, interceptors, schema, and database subsystems. The core is the heart of the server without protocols enabled. </td> </tr>
    <tr> <td>ApacheDS Core Plugin (Maven 2)</td> <td>A collection of tools as plugins to manage various tasks associated with the directory server. </td> </tr>
    <tr> <td>ApacheDS Core Shared</td> <td>Shared classes between the core plugin and the core to prevent cyclic dependencies since the core uses the core plugin. </td> </tr>
    <tr> <td>ApacheDS Core Unit</td> <td>To be described...</td> </tr>
    <tr> <td>ApacheDS Protocol Kerberos Shared</td> <td>The Kerberos protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Change Password</td> <td>The Change Password protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Dhcp</td> <td>The DHCP protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Dns</td> <td>The DNS protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Kerberos</td> <td>The Kerberos Protocol Provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Ldap</td> <td>The LDAPv3 protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Ntp</td> <td>The NTP protocol provider for ApacheDS </td> </tr>
    <tr> <td>ApacheDS Protocol Shared</td> <td>Shared library that is used by all protocol providers in ApacheDS </td> </tr>
    <tr> <td>ApacheDS Server JNDI</td> <td>The JNDI provider which launches the core and associated network services: Changepw, Kerberos, LDAP, and NTP if all are configured. By default only LDAP is configured to startup. </td> </tr>
    <tr> <td>ApacheDS Server Main</td> <td>To be described...</td> </tr>
    <tr> <td>ApacheDS Server Sar (JBoss 3.x)</td> <td>A server archive file for ApacheDS to run within a JBoss 3.x instance </td> </tr>
    <tr> <td>ApacheDS Server SSL</td> <td>An SSL support module for LDAPS with ApacheDS </td> </tr>
    <tr> <td>ApacheDS Server Tools</td> <td>Contained within this executable jar are various commandline utilities for apacheds. </td> </tr>
    <tr> <td>ApacheDS Server Unit</td> <td>Unit testing framework for ApacheDS Server JNDI Provider </td> </tr>
   </table>
  </section>
 </body>
</document>
