Question

I'm trying to bind a java object as a set of attributes based on tutorial given here

//In the main() method of the program
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:10389/o=csRepository");
env.put(Context.OBJECT_FACTORIES, "sample.UserFactory");
 // Create the initial context
DirContext ctx = new InitialDirContext(env);

User usr = new User("Goro");
ctx.bind("cn=Kill Bill, ou=employees", null, usr.getAttributes(""));

I have the User class as follows,

public class User implements DirContext {
    String employer;
    Attributes myAttrs;

    public User(String employer){
          this.employer = employer;
          myAttrs = new BasicAttributes(true);
          Attribute oc = new BasicAttribute("objectclass");
          oc.add("extensibleObject");
          oc.add("top");

          myAttrs.put(oc);
          myAttrs.put("em", employer);
       }

    public Attributes getAttributes(String name) throws NamingException {
        if (!name.equals("")) {
            throw new NameNotFoundException();
        }
        return (Attributes) myAttrs.clone();
    }
    //other methods
}

When trying to bind I get,

javax.naming.directory.NoSuchAttributeException: [LDAP: error code 16
- NO_SUCH_ATTRIBUTE: failed for MessageType : ADD_REQUEST Message ID : 2
    Add Request : Entry
    dn[n]: cn=Kill Bill, ou=employees,o=csRepository
    objectclass: extensibleObject
    objectclass: top
    cn: Kill Bill
    em: Goro
    ManageDsaITImpl Control
        Type OID    : '2.16.840.1.113730.3.4.2'
        Criticality : 'false' ' : ERR_04269 ATTRIBUTE_TYPE for OID em does not exist!]; remaining name 'cn=Kill Bill, ou=employees'
Was it helpful?

Solution

why does it complain that OID em does not exist.

Because it doesn't. Using extensibleObject entitles you to add any existing attribute to the object. It doesn't entitle you to invent new attributes.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top