You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Emmanuel Lécharny <el...@gmail.com> on 2013/02/22 14:33:42 UTC
AapcheDS startup sequence
Hi guys,
I have listed the startup and initialization sequence for a default
configuration. Here is the (impressive) list of actions we do. I have
added some comments (between [ and ]) when I think we are doing
something wrong of incorrect or duplicate some effort.
I will also do the same thing for the shutdown process : the two list
should likely fit (if all is good...)
This is FYI but you are free to give some feedback.
ApacheDS start
--------------
service <- new ApacheDirectoryService()
service.start()
cacheService <- new CacheService()
cacheService.initialize()
initSchemaManager
extract ldif schema if it does not exist
create a schemaManager
load the enabled schema
initSchemaLdifPartition
initConfigPartition
extract connfiguration
create the configuration partition
initialize the configuration partition
initialize the LdifPartition
initialize the AvlPartition
load all entries
read the configuration
initialize the DirectoryService
service <- new DefaultDirectoryService()
create the codec service
create the DefaultOperationManager
create the subentry cache [Should use the general cache]
create the default ChangeLog [should not be done inconditionally]
create the default Journal [should not be done inconditionally]
create the CsnFactory
create the SubtreEvaluator
set the default interceptor list
create the list of default interceptors
store the schemaManager in the service
create the interceptors
for each enabled interceptor
instanciate the interceptor
if it's the Authn interceptor
create each authenticator
create each PasswordPolicy
create the partitions (system, user partitions)
for each enabled partition
create partition
for each index
create index
load the context entry
store the system partition in the service
store the other partitions in the service
create the changeLog [already done]
load test entries if any
create the schema partition
service startup
create the shutdown hook thread
initialize()
initialize the cache service [it should never be null][it's
already initialized]
create the AP caches
create the DN factory using the dnCache
initialize the schema partition
initialize the ldifPartition
initialize the AvlPartition
create the EvaluatorBuilder
create the CursorBuilder
create the Optimizer
create the SearchEngine
create the Master table
initialize the AbstractBtreePartition
create the system indexes (presence, rdn, alias,
oneAlias, subAlis, ObjectClass, entryCsn, AdministrativeRole)
load the entries from disk or create a contextEntry
create a registrySynchronizer
create an Admin session
create the DefaultPartitionNexus
create the partitionLookupTree
update the rootDSE entry [should be done in the service]
initialize the DefaultPartitionNexus
add the system partition to the contextPartitions
initialize the system partition
initialize the JdbmPartition
create the Optimizer
create the EvaluatorBuilder
create the CursorBuilder
create the SearchEngine
initialize the AbstractBtreePartition
create the system indexes (presence, rdn, alias,
oneAlias, subAlis, ObjectClass, entryCsn, AdministrativeRole)
create the user indexes
create the Master table
load the contextEntry
add the schema partition to the contextPartitions
add the config partition to the contextPartitions
add the example partition to the contextPartitions
initialize the example partition
initialize the JdbmPartition
create the Optimizer
create the EvaluatorBuilder
create the CursorBuilder
create the SearchEngine
initialize the AbstractBtreePartition
create the system indexes (presence, rdn, alias,
oneAlias, subAlis, ObjectClass, entryCsn, AdministrativeRole)
create the user indexes
create the Master table
load the contextEntry
initialize the system partition [Already done before]
create the bootstrap entries
initialize the interceptors
for each interceptor
init
the authnInterceptor init :
set the defaults authenticators
load the PasswordPolicy state
if changeLog is enabled
init changeLog
if journal is enabled
init journal
show security warnings
get the lastest CSN
create the test entries
if we just extracted the config
update the file with the modifications
if the schema has just been extracted
uodate the file with the modifications
start the LDAP server
create the LDAP server
create a LdapSessionManager
create the LDapProtocolHandler
create the transports
create the LDAP and LDAPS transports
init the transports
create an Acceptor
create a NioSocketAcceptor
load the SaslMechanismHandlers (NTLM, DIGEST-MD5, GSSAPI, SIMPLE,
GSS-SPNEGO, CRAM-MD5)
load the extended operations (starttlshandler, storedprochandler,
gracefulShutdownHandler)
if replication is enabled
create a new SyncReplRequestHandler provider
create the consumers
create a new ReplicationConsumerImpl
load the consumer configuration
print LDAP banner
start the server
load the keyStore
if we don't depend on an external keystore file, use the info
in uid=admin
load the KeyManagerFactory
init the KeyManagerFactory
for each transport
if SSL enabled
initialize SSL
create a SSLContext
initialize the SSLContext
add the SSL filter in the MINA chain
add the LDAP codec in the MINA chain
add an executor in the MINA chain
start the network
inject the chain in the Accpetor
configure the Acceptor
inject the handlers in the Acceptor
bind the Acceptor
initialize the LDAP handlers [Should have been done before the
bind done on the Acceptor]
register the extended operations [Should have been done before
the bind done on the Acceptor]
register the SASL mechanisms [Should have been done before the
bind done on the Acceptor]
start the replication producer
start the consumers
start the NTP server
// To be done
start the Kerberos server
create the KDC server
// To be done
start the HTTP server
// To be done
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com