0
私は1つのeDirectoryを持っています。 Javaを使用して属性値を更新する必要があります。このために私は以下のコードを使用しています。Java数値列型をアップデートするLDAP:エラーコード17 - 未定義属性タイプ
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
属性をupadateが、問題はattrXYZ
属性を更新上にある、それは次のようなエラー「をattrXYZ」の
javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - Undefined Attribute Type]; remaining name 'cn=user01,ou=users,o=data'
属性タイプを与え、私もInteger.parseInt(valFaxExt)
が、同じエラーをしてみてくださいNumeric String
です。
私はEclipseでJavaを使用しています。