You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@directory.apache.org by Carsten Kaiser <ca...@valtech.de> on 2010/08/09 15:23:55 UTC
[ApacheDS] Embedded: Cannot create subcontext beneath newly created sub context()...
Hello there,
I'am a newbie to LDAP and I'm trying to use ApacheDS as embedded
LDAPServer for our integration tests. It took my quite some time to figure
out, how to get the web application up and running, to add my custom
schema extensions and to load my setup data. I'm using version 1.5.5 since
the example code for 1.5.7 was broken and I did not want to spend much
more time in getting 1.5.8-SNAPSHOT working. The schema extensions and the
setup data is loaded into the system partition resp. others partition
since I'm trying to simulate the later production environment, which will
use Sun ONE, so I want to use the schema as it will be defined in there.
Now I'am able to query my data and even to add new entries, but
unfortunately I'm not able to add another entry below my newly created
entries due to following error
15:06:02 [http-8088-1 ] ERROR de.aaa.AAARegistry
(552) - [LDAP: error code 32 - NO_SUCH_OBJECT: failed for
SearchRequest
baseDn : '1.3.6.1.4.1.36200.255.0.7='
filter : '(2.5.4.0=*)'
scope : base object
typesOnly : false
Size Limit : no limit
Time Limit : no limit
Deref Aliases : deref Always
attributes :
: Cannot find a partition for 1.3.6.1.4.1.36200.255.0.7=]
javax.naming.NameNotFoundException: [LDAP: error code 32 - NO_SUCH_OBJECT:
failed for SearchRequest
baseDn : '1.3.6.1.4.1.36200.255.0.7='
filter : '(2.5.4.0=*)'
scope : base object
typesOnly : false
Size Limit : no limit
Time Limit : no limit
Deref Aliases : deref Always
attributes :
: Cannot find a partition for 1.3.6.1.4.1.36200.255.0.7=]; remaining name
'servicename=/devices/v1/,
vin=WVWZZZ1JZXW000002,ou=devices,c=DE,o=Branch,o=AAA,ou=system'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapCtx.c_lookup(LdapCtx.java:1011)
at
com.sun.jndi.toolkit.ctx.ComponentContext.c_resolveIntermediate_nns(ComponentContext.java:152)
at
com.sun.jndi.toolkit.ctx.AtomicContext.c_resolveIntermediate_nns(AtomicContext.java:342)
at
com.sun.jndi.toolkit.ctx.ComponentContext.p_resolveIntermediate(ComponentContext.java:381)
at
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:311)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:236)
at
javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:178)
For some reason the creation of the first subcontext works fine although
it uses custom schema attribute types and object classes as well. Here is
the code:
public synchronized void registerProfile(AuthorizationProfile profile)
throws Exception
{
if (profile != null)
{
if (log.isInfoEnabled())
{
log.info(sm.getString("aaaRegistry.addProfile",
profile.getName(), profile.getVin()));
}
try
{
Attributes attributes = new BasicAttributes(true);
attributes.put(new
BasicAttribute(DEVICE_ATTRIBUTES.VIN.name(), profile.getVin()));
attributes.put(new
BasicAttribute(DEVICE_ATTRIBUTES.VehicleID.name(), profile.getName()));
Attribute objectClass = new BasicAttribute("objectClass",
"top");
objectClass.add("vehicle");
objectClass.add("consumer");
attributes.put(objectClass);
DirContext generatedContext =
context.createSubcontext(profile.getDn(), attributes);
if (profile.getRoles() != null &&
!profile.getRoles().isEmpty())
{
Attributes roleAttributes;
for (String role : profile.getRoles())
{
roleAttributes = new BasicAttributes(true);
roleAttributes.put(new
BasicAttribute("serviceName", role));
roleAttributes.put(new
BasicAttribute("activeFlag", "TRUE"));
objectClass = new BasicAttribute("objectClass",
"top");
objectClass.add("assignedService");
roleAttributes.put(objectClass);
context.createSubcontext(
new
StringBuilder("servicename=").append(role).append(",
").append(profile.getDn())
.toString(), roleAttributes);
}
}
}
catch (NamingException e)
{
log.error(e.getMessage(), e);
throw new
Exception(sm.getString("aaaRegistry.cannotAddProfile"), e);
}
}
}
Every hint is welcome!
Regards,
CAK
--
Carsten Kaiser
Principal Consultant
mailto:carsten.kaiser@valtech.de
Mobile: +49 170 5270206
Valtech GmbH
Werner-Heisenberg-Straße 2
63263 Neu-Isenburg
Germany
Phone: +49 6102 88468-0
Fax: +49 6102 88468-28
http://www.valtech.de
Geschäftsführer: Ingo Kriescher
Amtsgericht Düsseldorf HRB48672