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

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Nombres

Casi todos los métodos del interface Context deben procesar nombres. Por consistencia, deberíamos usar el mismo patrón en cada método que procese nombres. Una forma de conseguir esta conveniencia es definir y utilizar métodos de utilidad para procesar el nombre de entrada. Aquí damos dos ejemplos, uno para una implementación de contexto de un espacio de nombres plano y otro para una implementación de contexto de un espacio de nombres en forma de árbol. Si una implementación de contexto soporta un espacio de nombre plano o en forma de árbol está determindo por el servicio de nombres/directorio subyacente o por los requerimientos del proveedor de servicio.

Como se recomendó en la lección Las Reglas de Fondo , para ámbos ejemplos, cada método del interface Context que acepta un nombre java.lang.String está definido simplemente para llamar a su compañero que acepta un Name. El resto de esta explicación se enfoca en tratar los nombres estructurados.

Un Ejemplo de Espacio de Nombres Plano

El primer ejemplo implementa un espacio de nombres plano y no soporta federación. Los métodos que aceptan un Name usan el siguiente método de utilidad para determinar los componentes del nombre que deben ser procesados:

protected String getMyComponents(Name name) throws NamingException {
    if (name instanceof CompositeName) {
        if (name.size() > 1) {
	    throw new InvalidNameException(name.toString() +
		" has more components than namespace can handle");
	}
	return name.get(0);
    } else {
	// A compound name
	return name.toString();
    }
}

Como el contexto no soporta federación, acepta sólo nombres mixtos de un sólo componente o nombres compuestos. Si recibe un nombre mixto multi-componente, lanza una InvalidNameException.

Un Espacio de Nombres en Forma de Árbol

El segundo ejemplo implementa un espacio de nombres con forma de árbol y no soporta federación. Los métodos que aceptan un Name usan el siguiente método de utilidad para determinar los componentes del nombre que deberían ser procesados:

protected Name getMyComponents(Name name) throws NamingException {
    if (name instanceof CompositeName) {
	if (name.size() > 1) {
	    throw new InvalidNameException(name.toString() +
		" has more components than namespace can handle");
	}

	// Turn component that belongs to you into a compound name
	return myParser.parse(name.get(0));
    } else {
	// Already parsed
	return name;
    }
}

Al contrario que en el ejemplo plano, este método devuelve un Name que representa un nombre compuesto estructurado en lugar de un java.lang.String. Cuando este método obtiene un CompositeName, convierte el primer componente en un nombre compuesto y lo devuelve.


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