<?xml version="1.0" encoding="UTF-8"?> | |
<document> | |
<properties> | |
<author email="akarasulu@apache.org">Alex Karasulu</author> | |
<title>Apache Directory Project: Building the Directory Server</title> | |
</properties> | |
<body> | |
<section name="Building and Running the Apache Directory Server"> | |
<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 12/04 we use Maven 1.0.2 on JDK 1.4 and up. | |
</p> | |
<p> | |
The multiproject plugin is used to build all the maven projects | |
associated with the server. After checking out the server trunk from | |
subversion, cd into it and run the following multiproject command: | |
</p> | |
<source> | |
maven multiproject:install | |
</source> | |
<p> | |
Once you've built the server you'll find an executable jar file under | |
the main/target directory labeled apacheds-main-${version}.jar which can | |
be fired up like so: | |
</p> | |
<source> | |
[akarasulu@newton trunk]$ java -jar main/target/apacheds-main-0.8.0-SNAPSHOT.jar | |
server: using default properties ... | |
server: standard ldap port 389 is not available, using 1024 instead | |
server: started in 1368 milliseconds | |
</source> | |
<p> | |
When you start the server without a properties file arguement default | |
settings are used. It tries to bind to 389 but this non-root user | |
does not have the needed privledges so it tries to bind on the next | |
available port which is 1024. If you would like a properties file can | |
be used to override and set server specific properties to control her | |
behavoir. Below we use the <a href="http://vortuoad.notlong.com/"> | |
properties</a> file that comes preconfigured for Apache under the | |
server/trunk/main directory: | |
</p> | |
<source> | |
[akarasulu@newton trunk]$ java -jar main/target/apacheds-main-0.8.0-SNAPSHOT.jar main/server.properties | |
server: loading properties from main/eve.properties | |
server: started in 1449 milliseconds | |
</source> | |
</section> | |
<section name="Apache Directory Server's Maven Modules"> | |
<p> | |
The server 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>plugin</td> | |
<td>Contains a maven plugin used while developing with/for the | |
directory server.</td> | |
</tr> | |
<tr> | |
<td>core</td> | |
<td> | |
Contains the server's core which contains the JNDI Provider that | |
wraps/is the backend subsystem. | |
</td> | |
</tr> | |
<tr> | |
<td>shared</td> | |
<td>Contains shared classes between modules to prevent cyclic deps.</td> | |
</tr> | |
<tr> | |
<td>optional</td> | |
<td> | |
We might create this project in the near future to contain bundles | |
of optional schema jars. The server's maven plugin generates Java | |
class files for OpenLDAP schema files. These classes create schema | |
objects way faster than parsing a file to dynamically create schema | |
objects. The optional package will contain all the schema classes | |
for published schemas we can find. When firing up the server you | |
can request to load only those schemas you actually use. | |
</td> | |
</tr> | |
</table> | |
</section> | |
</body> | |
</document> |