2016-11-16 1 views
-1

Je crée une application dans laquelle j'écris un client LDAP qui se connecte à SunOne Directory Server . Utilisateur un entrer des attributs, sélectionnez tapez et entrez la valeur et mon application va créer cet utilisateur sur le SunOne.Valeur d'attribut 'homePhone' mal formé

Lorsque l'utilisateur sélectionne homePhone, type que Integer et entre valeur 22334546, il échoue avec ci-dessous exception

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

Le code même est

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

ldapCtx.bind(objectDN,null,attrs); 

Je suis en mesure de créer cet utilisateur en utilisant Répertoire Apache Studio

enter image description here

Répondre

0

Généralement, un numéro de téléphone est une chaîne et non un nombre entier. RFC 4517 recommande de stocker les numéros de téléphone dans un format canonique, c'est-à-dire E.123 international. La syntaxe "Numéro de téléphone" pour l'attribut homePhone est configurée dans votre schéma LDAP et est appliquée par défaut - vous pouvez toutefois modifier la configuration. Si votre propre programme Java et Apache Directory Studio se connectent à la même instance de serveur LDAP, ils doivent être traités de la même manière, car la syntaxe est appliquée par le serveur et non par le client. Et puisque 22334546 est une valeur acceptable, Apache Directory Studio réussit.

L'erreur semble être avec votre code, principalement attrVal ne pas contenir la bonne valeur.