Java при обновлении типа числовой строки LDAP: код ошибки 17 — неопределенный тип атрибута

#java #active-directory #ldap

#java #active-directory #ldap

Вопрос:

У меня есть один eDirectory. Я должен обновить значение атрибутов с помощью Java. Для этого я использую приведенный ниже код.

 public void updateEntry(User_Objects req) {
    try {
        propFile = LoadProp.getProperties();

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, propFile.getProperty(Constants.INITIAL_CONTEXT_FACTORY));
        properties.put(Context.PROVIDER_URL, propFile.getProperty(Constants.PROVIDER_URL));
        properties.put(Context.SECURITY_PROTOCOL, propFile.getProperty(Constants.SECURITY_PROTOCOL));
        properties.put(Context.SECURITY_PRINCIPAL, propFile.getProperty(Constants.SECURITY_PRINCIPAL));
        properties.put(Context.SECURITY_CREDENTIALS, propFile.getProperty(Constants.SECURITY_CREDENTIALS));

        DirContext context = new InitialDirContext(properties);
        String valAttrXYZ = "123";

        boolean status = false;
        status = UpdateIntoLdap(context, req.getUserDN(), "givenName", req.getFirstName());
        status = UpdateIntoLdap(context, req.getUserDN(), "attrXYZ", valAttrXYZ);
    } catch (NamingException e) {
    } catch (Exception e) {
    }
}

public boolean UpdateIntoLdap(DirContext context, String userDN, String attName, String value) {
    boolean status = true;
    try {
        if (value != null) {
            Attributes att = context.getAttributes(userDN);
            String attValue = displayAttributes(att, attName);
            Attribute mod0 = new BasicAttribute(attName, value);
            ModificationItem[] item = new ModificationItem[1];

            if (attValue.equals("error")) {
                Attributes attributes = context.getAttributes(userDN);
                item[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, mod0);
                attributes.put(mod0);
                context.modifyAttributes(userDN, item);
            } else {
                item[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
                context.modifyAttributes(userDN, item);
            }
        } else {
            status = false;
        }
    } catch (NamingException e) {
        status = false;
    } catch (Exception e) {
        status = false;
    }
    return status;
}
  

Я успешно обновляю givenName атрибут, но проблема заключается в обновлении attrXYZ атрибута, он выдает следующую ошибку

 javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'cn=user01,ou=users,o=data'
  

Тип атрибута «attrXYZ» является Numeric String
Я тоже пытаюсь Integer.parseInt(valFaxExt) , но та же ошибка.

Я использую Java с Eclipse.

Ответ №1:

Об этой ошибке сообщает сервер каталогов eDirectory, и это означает, что атрибут «attrXYZ» не определен в схеме сервера.