David Le Strat wrote:
>All,
>
>I am working on integration apacheDS with Jetspeed 2.
>I can create entries fine, but I am running into issue
>with the DirContext search.
>
>I obtain the following context using pretty much the
>default apacheds-server.xml
>
>env.put(Context.INITIAL_CONTEXT_FACTORY,
>"com.sun.jndi.ldap.LdapCtxFactory");
>env.put(Context.PROVIDER_URL,
>"ldap://localhost:10389/");
>env.put(Context.SECURITY_PRINCIPAL,
>"uid=admin,ou=system");
>env.put(Context.SECURITY_CREDENTIALS, rootPassword);
>env.put(Context.SECURITY_AUTHENTICATION, "simple");
>ctx = new InitialLdapContext(env, null);
>
>
>
Ok if you're embedding why are you going through the protocol with the
SUN LDAP Provider to operate on ApacheDS entries? Use the
CoreContextFactory instead that comes with apacheds to get a handle on
it. That way you don't have to waste cycles going through the network
stack.
>As you can see the default setting uses
>com.sun.jndi.ldap.LdapCtxFactory.
>
>I want to run the following search context query:
>
>SearchControls controls = new SearchControls();
>controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
>controls.setReturningObjFlag(true);
>
>NamingEnumeration searchResults = ((DirContext)
>ctx).search("", "(&(uid=1269495866)
>(objectclass=jetspeed-2-user))", controls );
>
>When doing so, I get the following error:
>
>org.apache.jetspeed.security.SecurityException:
>javax.naming.NamingException: [LDAP: error code 36 -
>failed on search operation]; remaining name ''
>
>org.apache.jetspeed.security.SecurityException: Caused
>by: javax.naming.NamingException: [LDAP: error code 36
>- failed on search operation]; remaining name ''
> at
>com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2964)
> at
>com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2934)
> at
>com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2740)
> at
>com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1811)
> at
>com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1734)
> at
>com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)
> at
>com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:328)
> at
>com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:313)
> at
>javax.naming.directory.InitialDirContext.search(InitialDirContext.java:238)
> at
>org.apache.jetspeed.security.spi.impl.ldap.AbstractLdapDao.searchByWildcardedUid(AbstractLdapDao.java:275)
> at
>org.apache.jetspeed.security.spi.impl.ldap.AbstractLdapDao.lookupByUid(AbstractLdapDao.java:210)
> ... 13 more
>
>
>
David this is internal to the SUN JNDI Provider. I don't have a clue
why it would be failing. I'd try the search on another LDAP server to
see the behavoir. If the response is the same then you have a config
issue with the SUN provider. If not then we can start looking at
ethereal dumps to see what's going on. Might be the SUN provider is
getting an error code it cannot map to a JNDI exception, however it
usually defaults to a general NamingException if that's the case.
Alex
|