All directory projects use Maven 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.
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:
maven multiproject:install
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:
java -jar main/target/apacheds-main-$version.jar server.xml
When you start the server without a xml conf file arguement default settings are used. It tries to bind to 389 but this non-root user does not have the needed priviledges so it tries to bind on the next available port which is 1024. You may like a conf file that can be used to override and set server specific properties to control its behavoir. Below we use the xml configuration file that comes preconfigured for Apache under the server/trunk/main directory:
java -jar main/target/apacheds-main-${version}.jar main/server.xml
The server is composed of 4 separate maven projects. These projects are summarized below:
Project | Summary |
---|---|
core | The heart of the server which contains the JNDI Provider, interceptors, partitions and schema. |
shared | Contains shared classes between modules to prevent cyclic deps. |
plugin | Contains a maven plugin used while developing with/for the directory server. |
main | Contains the ApacheDS application main() along with a special InitialContextFactory implemenation that extends the CoreContextFactory which is an InitialContextFactory implementation (ICF). This ICF is the ServerContextFactory and it initializes MINA adding the LDAP protocol provider as well as the other providers for protocols like Kerberos, Change Password, NTP, DNS and DHCP. Of course the configuration determines if these protocols are started or not. All protocols with the exception of NTP use the core LDAP store as their backing store with custom schema. |