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

El ejemplo atributos ilustra c�mo un ejemplar de la clase DirContext, Drink es almacenado y recuperado desde el directorio. Cuando se buscan los atributos del objeto Drink desde el directorio, Context.lookup() convierte estos atributos en un ejemplar de Drink.

Drink d2 = (Drink) ctx.lookup("cn=favDrink");

Esto sucede por.

  1. El proveedor de servicio usado (el LDAP de Sun) invoca a DirectoryManager.getObjectInstance() y suministra al m�todo los datos (un DirContext) que el proveedor lee desde el directorio de la entrada "cn=favDrink".
  2. El programa cliente identifica la factor�a de objetos (DrinkFactory) para usarla cuando crea el contexto inicial.
    // Add property so that object factory can be found
    env.put(Context.OBJECT_FACTORIES, "DrinkFactory");
    
  3. DrinkFactory.getObjectInstance() devuelve un ejemplar de Drink.

DrinkFactory.getObjectInstance() primero verifica que el objeto est� pensado para su factor�a. Hace esto chequeando que el objeto es un DirContext y que contiene un atributo "drinkType". Si esta verificaci�n falla, el m�todo devuelve null. De otra forma, obtiene el valor del atributo "drinkType" (en este caso, "water") y lo usa para crear un ejemplar de Drink.

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

public Object getObjectInstance(Object obj, Name name, Context ctx,
    Hashtable env, Attributes inAttrs) throws Exception {
    if (obj instanceof DirContext) {
	try {
	    Attribute dt;
	    if (inAttrs != null && (dt=inAttrs.get("drinktype")) != null) {
	        String drinkType = (String)dt.get();

		return new Drink(drinkType);
	    }
        } catch (NamingException e) {
	    // Debug
   	    System.err.println(e);
	    e.printStackTrace();
	}
    }
    // Return null to indicate that other factories should be tried
    return null;
}

COMPARTE ESTE ARTÍCULO

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