Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) [Parte I]
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Objeto Personalizado

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;
}

Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis