| <?xml version="1.0" encoding="UTF-8"?> | |
| <document> | |
| <properties> | |
| <author email="akarasulu@apache.org">Alex Karasulu</author> | |
| <title>Apache Directory Project: Server's Features</title> | |
| </properties> | |
| <body> | |
| <section name="Server's Features"> | |
| <p> | |
| The Apache Directory Server is an embeddable LDAP server implemented in | |
| pure Java. It has several features that make it unique amoung LDAP | |
| servers. These features are described below: | |
| </p> | |
| <ul> | |
| <li> | |
| Designed as an LDAP and X.500 experimentation platform. Plugable | |
| components and subsystems make Eve extremely modular and perfect for | |
| experiments with various aspects of the LDAP protocol. The server | |
| may be made to can run on any IoC based microkernel using IoC type | |
| wrappers for POJO components implementing POJI services. | |
| </li> | |
| <li> | |
| The server's frontend is completely separable from its backend and | |
| vice-versa making it very flexible for implementing virtual | |
| directories, proxy servers and gateways to X.500. | |
| </li> | |
| <li> | |
| Several backends can be implemented and plugged into the server's | |
| partition nexus. The server supports a BTree based partition out of | |
| the box but any backing store can be used to implement a partition so | |
| long as it conforms to interfaces. | |
| </li> | |
| <li> | |
| The server exposes all aspects of administration via a special system | |
| backend. LDAP can be used to manage these concerns through the | |
| system naming context at <code>ou=system</code>. | |
| </li> | |
| <li> | |
| Java based triggers and stored procedures are being implemented. | |
| </li> | |
| <li> | |
| Both the backend subsystem and the frontend are separable and | |
| independently embeddable. | |
| </li> | |
| <li> | |
| The server contains a server side JNDI LDAP provider as the facade | |
| for the entire backend subsystem. JNDI operations are directly | |
| translated by this provider into operations against the nexus and the | |
| target partitions storing server entries. | |
| </li> | |
| <li> | |
| The server will use JNDI as the data access API for stored procedures. | |
| This will make stored procedures functional within and outside of the | |
| server without requiring recompilation. | |
| </li> | |
| <li> | |
| The server's networking code is based on a simple Staged Event Driven | |
| Architecture (SEDA) which gives it the ability to handle large | |
| amounts of concurrency. Multiple swapable network layers will be | |
| available for different usage characteristics. | |
| </li> | |
| <li> | |
| The server uses the Snickers tools and APIs for ASN.1 BER encoding and | |
| decoding. These tools are designed for a very small encoding and | |
| decoding footprint as well as for use in non-blocking servers. The | |
| chunking nature of the BER codec makes the server very efficient while | |
| handling encoding and decoding making it more resistant to DoS | |
| attacks. | |
| </li> | |
| </ul> | |
| </section> | |
| </body> | |
| </document> |