Métodos de Localización
El ejemplo de espacio de nombres plano
usa almacenamiento en memoria; no soporta persistencia. Si una implementación de contexto
soporta persistencia o no, está determinado por el servicio de nombres/directorio subyacente o
los requerimientos del proveedor de servicio.
Aquí está la implementación de
lookup():
public Object lookup(Name name) throws NamingException {
if (name.isEmpty()) {
// Ask to look up this context itself; create and return
// a new instance that has its own independent environment.
return (createCtx(myEnv));
}
// Extract the components that belong to this namespace
String nm = getMyComponents(name);
// Find the object in the internal hash table
Object answer = bindings.get(nm);
if (answer == null) {
throw new NameNotFoundException(name + " not found");
}
return answer;
}
De acuerdo a la especificación JNDI, una lookup() de un nombre
vacío debería devolver una copia del propio contexto. Después de extraer el componente que
pertenece a ese espacio de nombres, la implementación procede a buscar la unión nombrada
desde su estructura de datos interna-- una hashtable. Si no la encuentra, lanza una
NameNotFoundException. En una implementación real,
accederíamos al servicio de nombres/directorio subyacente en lugar de acceder al hashtable.
Este ejemplo no sopota enlaces de
referencias, por eso este método no busca los
LinkRefs o los trata especialmente.
LookupLink
Esta definición de ejemplo de
lookupLink() es la misma que su definición de
lookup(). Este ejemplo no soporta enlaces de referencias. Puedes
ver una descripción de cómo soportar enlaces de referencia en la lección
Miscelánea.