Misceláneas
Esta sección describe problemas varios adicionales que una implementación de contexto debe
manejar.
Manejo de Recursos
El lenguaje de programación Java proporciona recolección de basura automática. Esto significa
que cuando un objeto deja de ser referenciado, el sistema de ejecución Java lo elimina.
close() da al usuario del API una forma de eliminar un ejemplar de
Context y sus recursos asociados antes de que la recolección de
basura automática lo recoja. Esto es importante para las implementaciones de contexto basadas
en red tanto porque las conexiones de red son un recursos limitado tanto para los clientes
como para los servidores. El ejemplo del
espacio de nombres plano no proporciona
ninguna implementación sustancial para close(). Una
implementación real, espacialmente una que manejara conexiones de red, definiría
close() para eliminar referencias y conexiones.
Propiedades de Entorno
La lección Las Reglas de Fondo
describe como una implemetnación de contexto debería tratar sus propiedades de entorno. Incluso
aunque los ejemplos del
espacio de nombres plano y del
espacio de nombres en forma de árbol no usan
propiedades de entorno, deberían proporcionar implementaciones para métodos relacionados con el
entorno.
Como se sugirió en la lección
Las Reglas de Fondo,
getEnvironment() debería proporcionar una cópia de
sólo-lectura o un clon de sus propiedades de entorno a su llamador.
Un programa usa addToEnvironment() y
removeFromEnvironment() para actualizar un entorno
de contexto. El ejemplo del espacio de nombres plano
simplemente actualiza su hashtable de entorno interna. Una implementación real
examinaría el nombre de la propiedad y actuaría apropiadamente para actualizar el comportamiento
del ejemplo Context adecuadamente.
Operaciones no Soportadas
Una implementación de contexto debe proporcionar una implementación válida para
lookup(). Para todos los otros métodos, si una
implementación de contexto no soporta un método particular, la definición de ese método debería
lanzar una
OperationNotSupportedException.
Por ejemplo, una implementación de contexto para un servicio de nombres de sólo lectura no puede
soportar ningún método que implique actualizaciones. Aquí tenemos un ejemplo de una definición de
esa implementación de contexto del método Context.bind().
public void bind(Name obj, Object obj) throws NamingException {
throw new OperationNotSupportedException(
"Read-only service does not support updates");
}