directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Evans <richard.ev...@datanomic.com>
Subject RE: Embedding ApacheDS using DirectoryServiceBean etc
Date Mon, 23 May 2011 08:57:10 GMT
I'm not sure I get this.  It seems as though using DirectoryServiceBean and ServiceBuilder
just can never work because of this NPE.  Surely that's a bug?  I do create a schema manager
in the XML:

  <bean class="org.apache.directory.server.config.beans.DirectoryServiceBean" id="dsb">
    ...
  </bean>
  
  <bean id="ds" class="org.apache.directory.server.config.ServiceBuilder" factory-method="createDirectoryService">
    <constructor-arg ref="dsb"/>
    <constructor-arg ref="il"/>
    <constructor-arg ref="sm"/>
  </bean>
  
  <bean id="il" class="org.apache.directory.server.core.InstanceLayout">
    ...
  </bean>
  
  <bean id="sm" class="org.apache.directory.shared.ldap.schemamanager.impl.DefaultSchemaManager"/>

Richard

-----Original Message-----
From: ayyagarikiran@gmail.com [mailto:ayyagarikiran@gmail.com] On Behalf Of Kiran Ayyagari
Sent: 22 May 2011 21:02
To: Apache Directory Developers List
Subject: Re: Embedding ApacheDS using DirectoryServiceBean etc

On Mon, May 23, 2011 at 1:10 AM, Richard Evans
<richard.evans@datanomic.com> wrote:
> I'm experimenting with embedding ApacheDS (1.5.8-SNAPSHOT built from trunk)
> using configuration beans created in Spring XML along with the
> ServiceBuilder.  I've attached where I've got to so far - it is not
> complete, but I've run into a couple of problems.
>
> Firstly I get an NPE:
>
> java.lang.NullPointerException
>    at
> org.apache.directory.server.core.schema.registries.synchronizers.RegistrySynchronizerAdaptor.<init>(RegistrySynchronizerAdaptor.java:123)
>    at
> org.apache.directory.server.core.schema.SchemaPartition.doInit(SchemaPartition.java:224)
>    at
> org.apache.directory.server.core.partition.AbstractPartition.initialize(AbstractPartition.java:73)
>    at
> org.apache.directory.server.core.DefaultDirectoryService.initialize(DefaultDirectoryService.java:1484)
>    at
> org.apache.directory.server.core.DefaultDirectoryService.startup(DefaultDirectoryService.java:962)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    at java.lang.reflect.Method.invoke(Method.java:597)
>    at rde.tests.apacheds.LaunchADS.main(LaunchADS.java:49)
>
> It looks as though the SchemaManager instance is never set on the
> SchemaPartition created by DefaultSchemaService.
>
the SchemaManager won't be created by SchemaPartition automatically
rather we need to set it after loading
the schema with any of the available schema loaders.

Take a look at the methods initSchemaLdifPartition and
initDirectoryService present in ApacheDsService class they might give
you an idea.

> Secondly, in 1.5.7 the suffix for a partition was a string, now it's a Dn.
>  There are lots of constructors for the Dn object - which should be used
> here?
>
you can use the one which takes a single string argument while
configuring, but in general it is good to use the Dn(SchemaManager,
String...)
if you have access to the schema manager.
> Thanks
>
> Richard
>



-- 
Kiran Ayyagari

Mime
View raw message