<?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> |