The server left one of its databases in a corrupt state, which causes the startup to fail. The database corruption happened when I was editing the directory using JXplorer.
I think database corruption should not cause the startup to fail. Instead it should try to recover as much as possible.
I will attach the database in question. The partition configuration is this:
<bean id="tcatTestPartition" class="org.apache.ldap.server.configuration.MutableDirectoryPartitionConfiguration">
<property name="name"><value>tcat</value></property>
<property name="suffix"><value>dc=tcat,dc=test</value></property>
<property name="indexedAttributes">
<set>
<value>dc</value>
<value>ou</value>
<value>objectClass</value>
<value>krb5PrincipalName</value>
<value>uid</value>
</set>
</property>
<property name="contextEntry">
<value>
objectClass: top
objectClass: domain
objectClass: extensibleObject
dc: tcat
</value>
</property>
</bean>
This is the log from the failed startup attempt:
INFO 2006-02-17 12:45:29,616 [server.ServerMain; main]: server: loading settings from main/server.xml
INFO 2006-02-17 12:45:29,806 [xml.XmlBeanDefinitionReader; main]: Loading XML bean definitions from file [C:\workspace\apacheds-0.9.3\main\server.xml]
INFO 2006-02-17 12:45:29,996 [core.CollectionFactory; main]: JDK 1.4+ collections available
INFO 2006-02-17 12:45:30,016 [core.CollectionFactory; main]: Commons Collections 3.x available
INFO 2006-02-17 12:45:30,217 [support.FileSystemXmlApplicationContext; main]: Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=22057969]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [environment,configuration,examplePartitionConfiguration,examplePartitionConfiguration2,tcatTestPartition,org.springframework.beans.factory.config.CustomEditorConfigurer]; root of BeanFactory hierarchy
INFO 2006-02-17 12:45:30,237 [support.FileSystemXmlApplicationContext; main]: 6 beans defined in application context [org.springframework.context.support.FileSystemXmlApplicationContext;hashCode=22057969]
INFO 2006-02-17 12:45:30,237 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'org.springframework.beans.factory.config.CustomEditorConfigurer'
INFO 2006-02-17 12:45:30,297 [support.FileSystemXmlApplicationContext; main]: Unable to locate MessageSource with name 'messageSource': using default [
org.springframework.context.support.DelegatingMessageSource@1342a67]
INFO 2006-02-17 12:45:30,297 [support.FileSystemXmlApplicationContext; main]: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [
org.springframework.context.event.SimpleApplicationEventMulticaster@1d8d39f]
INFO 2006-02-17 12:45:30,307 [support.DefaultListableBeanFactory; main]: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [environment,configuration,examplePartitionConfiguration,examplePartitionConfiguration2,tcatTestPartition,org.springframework.beans.factory.config.CustomEditorConfigurer]; root of BeanFactory hierarchy]
INFO 2006-02-17 12:45:30,307 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'environment'
INFO 2006-02-17 12:45:30,307 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'configuration'
INFO 2006-02-17 12:45:30,467 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'examplePartitionConfiguration'
INFO 2006-02-17 12:45:30,497 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'examplePartitionConfiguration2'
INFO 2006-02-17 12:45:30,497 [support.DefaultListableBeanFactory; main]: Creating shared instance of singleton bean 'tcatTestPartition'
Exception in thread "main" org.apache.ldap.server.interceptor.InterceptorException: Failed to initialize interceptor chain. [Root exception is java.lang.NullPointerException]
at org.apache.ldap.server.interceptor.InterceptorChain.init(InterceptorChain.java:243)
at org.apache.ldap.server.DefaultDirectoryService.initialize(DefaultDirectoryService.java:680)
at org.apache.ldap.server.DefaultDirectoryService.startup(DefaultDirectoryService.java:203)
at org.apache.ldap.server.jndi.AbstractContextFactory.getInitialContext(AbstractContextFactory.java:102)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:82)
at org.apache.ldap.server.ServerMain.main(ServerMain.java:76)
Caused by: java.lang.NullPointerException
at org.apache.ldap.server.partition.impl.btree.ScopeEvaluator.assertSubtreeScope(ScopeEvaluator.java:102)
at org.apache.ldap.server.partition.impl.btree.ScopeEvaluator.evaluate(ScopeEvaluator.java:79)
at org.apache.ldap.server.partition.impl.btree.LeafEvaluator.evaluate(LeafEvaluator.java:108)
at org.apache.ldap.server.partition.impl.btree.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:106)
at org.apache.ldap.server.partition.impl.btree.ExpressionEnumerator$2.assertCandidate(ExpressionEnumerator.java:259)
at org.apache.ldap.server.partition.impl.btree.IndexAssertionEnumeration.prefetch(IndexAssertionEnumeration.java:165)
at org.apache.ldap.server.partition.impl.btree.IndexAssertionEnumeration.<init>(IndexAssertionEnumeration.java:66)
at org.apache.ldap.server.partition.impl.btree.ExpressionEnumerator.enumConj(ExpressionEnumerator.java:272)
at org.apache.ldap.server.partition.impl.btree.ExpressionEnumerator.enumerate(ExpressionEnumerator.java:134)
at org.apache.ldap.server.partition.impl.btree.DefaultSearchEngine.search(DefaultSearchEngine.java:139)
at org.apache.ldap.server.partition.impl.btree.BTreeDirectoryPartition.search(BTreeDirectoryPartition.java:256)
at org.apache.ldap.server.partition.DefaultDirectoryPartitionNexus.search(DefaultDirectoryPartitionNexus.java:647)
at org.apache.ldap.server.authz.GroupCache.initialize(GroupCache.java:99)
at org.apache.ldap.server.authz.GroupCache.<init>(GroupCache.java:79)
at org.apache.ldap.server.authz.AuthorizationService.init(AuthorizationService.java:156)
at org.apache.ldap.server.interceptor.InterceptorChain.register0(InterceptorChain.java:398)
at org.apache.ldap.server.interceptor.InterceptorChain.register(InterceptorChain.java:357)
at org.apache.ldap.server.interceptor.InterceptorChain.init(InterceptorChain.java:229)
... 9 more