Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Note
titleWork in progress

This site is in the process of being reviewed and updated.

Introduction

There is two ways to initialize the server :

...

The server initialization is done in two steps. The first one read the confuguration, and set all the necessary structures, and the second step start the server.

Initialization

This is done by reading the server.xml file, which is a Spring based document. As we refer many classes into this file, they will be instanciated on the fly.

...

The following schema represent the properties set by this configuration file :

Configuration initialization

During this phase, we instanciate the MutableServerStartupConfiguration, which will initialize a lot of structures, through the call to those three methods :

...

then we will initialize the two declared partitions, system and example

setDefaultAuthenticatorConfigurations() method

This method initialize the authentication methods. At the moment, we support only Simple authentication (ie with a password) or Anonymous authentication.

...

For information about authentication mechanisms, open this page : Authentication Mechanisms in ADS

setDefaultBootstrapSchemas() method

In this method, we will load all the default schemas, which are :

...

Note
titleDouble schema loading ?

It can be noted that all the default schema loaded in this section are also declared in the server.xml file. It is questionnable to load those default schema in this part, and it may be decided to remove this step in the default initialization...

setDefaultInterceptorConfigurations() method

Here, we will create the list of all existing interecptors. Each interceptor is an instance of the MutableInterceptorConfiguration class.

...

For more informations about Interceptors, go to this page : Interceptors

Other parameters 

When this basic initialization is done, this phase is achieved by the loading of default values :

Parameter

Default value

Description

enableNetworking

TRUE

Used if we allow the server to accept network communication (if the server is embeded, it can be set to FALSE)

synchPeriodMillis

20 000 ms

Interval between each flush to the disk of modifed data. Can be set to 0 if the user wants all data to be flushed on disk as soon as they are modified, but this has a huge negative impact on performance.

ldapPort

389

Default LDAP port.

ldapsPort

686

Default LDAPS port.

ldapsCertificateFile

<basedir>/certificates/server.cert

Default certificate file storage

ldapsCertificatePassword

"changeit"

Default SSL password

enableLdaps

FALSE

LDAPS is not enabled by default

enableKerberos

FALSE

KERBEROS is not enabled by default

enableChangePassword

FALSE

ChangePW is not enabled by default

enableNtp

FALSE

NTP is not enabled by default

ldifDirectory

null

The dirctory in which ldif files will be read

System and example partitions initialization

Those two partitions are instances of the MutableBTreePartitionConfiguration class.

...

 
It should be clear that this entry  must be valid. We can consider that the partition suffix is the entry's DN. In our example, this is dc=example, dc=com.

Environment setting 

After this first initialization done, we have to augment the envirnoment with some specific properties. Up to this point, the environment contains :

Property

Value

Description

java.naming.security.principal

uid=admin,ou=system

Admin user DN

java.naming.security.authentication

simple

Authentication mechanism used for this user

java.naming.security.credentials

secret

Admin password : THIS MUST BE CHANGED !!!

We will add those properties :

...

Now, we have to reach the last two steps : instanciate the server before starting it, and create a thread which will be responsible of saving modified entries from the cache to the disk.

Server instanciation

The configuration has been read, we now have to instanciate the server. This is done throw a JNDI invocation of the InitialDirContext() method :

...

where env is the environment we have set in the previous steps. This method calls the getInitialContext() from the ServerContextFactory class which has been associated with the java.naming.factory.initial property.

Launching the server .