Programación en castellano
Inicio > Tutoriales > J2EE > Sistema de Nombrado en Java (JNDI) [Parte I]
-Tutoriales

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


Objetos con Atributos

Si el objeto que estamos intentato unir no es Serializable ni Referenceable, todavía podemos unirlo si tiene atributos, la unión de estas uniones con objetos DirContext es una característica soportada por el proveedor de servicios. El proveedor de servicios LDAP de Sun soporta esta característica.

. Interoperabilidad

Unir objetos DirContext es especialmente útil para interoperabilidad con aplicaciones no-Java. Un objeto está representado por un conjunto de atributos, que pueden ser leídos desde el directorio y usados por aplicaciones no-Java. Los mismos atributos también pueden ser leídos e interpretados por un proveedor de servicios JNDI, que, en conjunción con una factoría de objetos, los convierte en un objeto Java.

Por ejemplo, un objeto podría tener, como algunos de sus valores de atributos, URLs que el servicio JNDI podría usar para generar un ejemplar de un objeto Java que la aplicación podría usar. La misma URL podría también ser utilizada por aplicaciones no-Java.

. Unir un Objeto Usando sus Atributos

El siguiente ejemplo muestra una clase Drink que implementa el interface DirContext. Este ejemplo no usa la mayoría de los métodos de DirContext y sólo lanza una OperationNotSupportedException.

public class Drink implements DirContext {
    String type;
    Attributes myAttrs;
    
    public Drink(String d) {
	type = d;
	myAttrs = new BasicAttributes(true);  // Case ignore
	Attribute oc = new BasicAttribute("objectclass");
	oc.add("extensibleObject");
	oc.add("top");

	myAttrs.put(oc);
	myAttrs.put("drinkType", d);
    }
    
    public Attributes getAttributes(String name) throws NamingException {
	if (! name.equals("")) {
	    throw new NameNotFoundException();
	}
	return (Attributes)myAttrs.clone();
    }

    public String toString() {
	return type;
    }
...
}

La clase Drink contiene los atributos "objectclass" y "drinkType". El atributo "objectclass" contiene dos valores: "top" y "extensibleObject".

El atributo "drinkType" se selecciona usando el string pasado a su constructor. Por ejemplo, si el ejemplar se creó usando new Drink("water"), entonces su atributo "drinkType" tendrá el valor "water".

El siguiente ejemplo crea un ejemplar de Drink y llama a Context.bind() para añadirlo al directorio.

// Create the object to be bound
Drink dr = new Drink("water");

// Perform the bind
ctx.bind("cn=favDrink", dr);

Cuando el objeto es unido, sus atributos se extraen y se almacenan en el directorio.

Cuando posteriormente se busca el objeto en el directorio, se usará su correspondiente factoría de objetos para devolver un ejemplar del objeto. La factoría de objetos está identificada por la propiedad de entono Context.OBJECT_FACTORIES cuando se creó el contexto inicial para leer el objeto. Los detalles de la conversión se describen en la lección Factorías de Objetos.

Hashtable env = ...;
// Add property so that the object factory can be found
env.put(Context.OBJECT_FACTORIES, "DrinkFactory");

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// Read back the object
Drink dr2 = (Drink) ctx.lookup("cn=favDrink");
System.out.println(dr2);

Esto produce la siguiente salida, "water", producida por Drink.toString():

# java DirObj
water

Desde la perspectiva de la aplicación que usa el JNDI, sólo está tratando con bind() y lookup(). El proveedor de servicios tiene cuidado de obtener los atributos del objeto y convertirlos desde/a el propio objeto real.

Observa que sólo podemos almacenar un objeto DirContext en el directorio si el proveedor de servicios lo soporta.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados