Sistema de Nombrado en Java (JNDI) [Parte I]

El ejemplo de objeto personalizado ilustra c�mo un ejemplar de una clase definida por el usuario, Person es almacenado y recuperado desde el directorio. Cuando se buscan los atributos de un objeto Person desde el directorio, el m�todo Context.lookup() convierte estos atributos en un ejemplar de Person.

Person john2 = (Person) ctx.lookup("cn=John Smith");

Esto es posible porque.

  1. El proveedor de servicio utilizado (LDAP de Sun) llama a DirectoryManager.getObjectInstance() y suministra al m�todo el objeto (un objeto contexto LDAP) y los atributos que el proveedor lee desde el directorio de la entrada "cn=John Smith".
  2. El programa cliente identifica la factor�a de objetos (PersonObjectFactory) usando un fichero de recursos de aplicaci�n llamado PersonObjectFactory como una de las factor�as de objetos a probar.
  3. PersonObjectFactory.getObjectInstance() devuelve un ejemplar de Person.

PersonObjectFactory.getObjectInstance() primero verifica que el objeto est� pensado para su factor�a. Lo hace chequeando que el atributo "objectclass" tiene un valor de "person". Si esta verificaci�n falla, el m�todo devuelve null. De otro modo, construye un ejemplar de Person suministrandole al constructor los valores obtenidos de las otras entradas de atriutos, como "surname" y "commonname".

Aqu� tenemos la definici�n de PersonObjectFactory.getObjectInstance().

public Object getObjectInstance(
    Object obj, Name name, Context ctx, Hashtable env, Attributes attrs)
    throws Exception {

    // Only interested in Attributes with "person" objectclass
    // System.out.println("object factory: " + attrs);
    Attribute oc = (attrs != null ? attrs.get("objectclass") : null);
    if (oc != null && oc.contains("person")) {
        Attribute attr;
	String passwd = null;

	// Extract the password
	attr = attrs.get("userPassword");
	if (attr != null) {
	    passwd = new String((byte[])attr.get());
	}
        Person per = new Person(
          (String)attrs.get("sn").get(),
          (String)attrs.get("cn").get(),
	  passwd,
          (attr=attrs.get("telephoneNumber")) != null ? (String)attr.get() : null,
          (attr=attrs.get("seealso")) != null ? (String)attr.get() : null,
          (attr=attrs.get("description")) != null ? (String)attr.get() : null);
        return per;
    }
    return null;
}

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO