blob: 2143646c86b7b0b50f5969ab9e1fda138e7ac7d0 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<document>
<properties>
<author email="akarasulu">akarasulu</author>
<title>ApacheDS - Building</title>
</properties>
<body>
<section heading="h2" 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>java -jar main/target/apacheds-main-$version.jar server.xml
</source>
<p>
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
<a href="http://valpithy.notlong.com/">xml configuration</a>
file that comes preconfigured for Apache under the server/trunk/main
directory:
</p>
<source>java -jar main/target/apacheds-main-${version}.jar main/server.xml
</source>
</section>
<section heading="h2" 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>
core</td>
<td>
The heart of the server which contains the JNDI Provider, interceptors,
partitions and
schema.</td>
</tr>
<tr>
<td>
shared</td>
<td>
Contains shared classes between modules to prevent cyclic
deps.</td>
</tr>
<tr>
<td>
plugin</td>
<td>
Contains a maven plugin used while developing with/for the directory
server.</td>
</tr>
<tr>
<td>
main</td>
<td>
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.</td>
</tr>
</table>
</section>
</body>
</document>