2016-11-16 2 views
-1

Я создаю приложение, в котором я пишу LDAP-клиент, который будет подключиться к серверу SunOne Directory Server. Пользователь вводит атрибуты, выберите и введите значение, и мое приложение создаст этого пользователя на SunOne.Значение атрибута Malformed 'homePhone'

Когда пользователь выбирает homePhone, типа как Integer и входит в стоимость, как 22334546, он терпит неудачу с ниже исключением

javax.naming.directory.InvalidAttributeValueException: Malformed 'homePhone' attribute value; remaining name 'cn=Identity3,ou=SunOU' 

Код же

for(...) 
{ 
    String attrName = attrRequest.getName(); 
    Object attrVal = attrRequest.getValue(); 
    BasicAttribute attribute = getBasicAttribute(attrName, attrVal); 
    attrs.put(attribute); 
} 

ldapCtx.bind(objectDN,null,attrs); 

Я могу создать этот пользователь, используя Apache directory Студия

enter image description here

ответ

0

Как правило, номер телефона представляет собой строку, а не целое число. RFC 4517 рекомендует хранить телефонные номера в каноническом формате, т. Е. На E.123. Синтаксис «Телефонный номер» для атрибута homePhone настроен в вашей схеме LDAP и применяется по умолчанию - вы можете изменить конфигурацию.

Если ваша собственная программа Java и Apache Directory Studio подключены к одному экземпляру сервера LDAP, к ним следует относиться одинаково, потому что синтаксис выполняется сервером, а не клиентом. И с 22334546 приемлемое значение, Apache Directory Studio преуспевает.

Ошибка, кажется, с вашим кодом, в основном attrVal не имеет правильного значения.