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:


Parámetros y Valores de Retorno

Cuando escribimos un proveedor de servicio, debemos tener en mente ciertas reglas sobre cómo tratar los parámetros de entrada y los valores de retorno. Estas reglas no sólo afectan a la corrección del proveedor de servicio y por último a la corrección del programa que lo usa, sino que también tienen implicaciones de seguridad. Estas reglas se aplican a llamadas a métodos sobre el interface Context y sus subinterfaces y se explican en las siguientes páginas.

Los Parámeteros son Propiedad del LLamador

Cuando un proveedor de servicio acepta un parámetro del llamador como parte de una llamada a método, no debe modificar los contenidos del parámetro. Supongamos que un proveedor de servicio recibe un java.util.Hashtable como un parámetro de entorno. El no debe añadir, borrar o modificar ningún ítem del Hashtable. Si el proveedor debe usar una versión modificada del Hashtable (por ejemplo, borrando cualquier propiedad relacionada con la seguridad), debe hacer esto sólo después de clonar el Hashtable.

En otro ejemplo, cuando el proveedor obtiene un parámetro Name, no debe añadir, borrar o modificar ningún componente del nombre.

Los Parámetros son Sólo Válidos Durante la Llamada

Un proveedor de servicio no debe manetener punteros a parámetros más allá de la llamada a método. Si el proveedor de servicio debe retener cierta información pasada en los parámetros, debe clonar o copiar la información a variables accesibles localmente.

Por ejemplo, si un llamador invoca a LdapContext.setRequestControls() con un valor no-null Control[], el proveedor de servicio debería copiar el array antes de volver de la llamada. Después de la llamada, cualquier cambio que el llamador haga en su array no debería afectar al proveedor de servicio y viceversa.

Los Valores de Retorno son Propiedad del Llamador

Cuando un proveedor de servicio devuelve un objeto al llamador, debería darle la propiedad del objeto. Entonces el llamador es libre de hacer cambios en el objeto devuelto, y dichos cambios no deberían afectar al proveedor de servicio.

Por ejemplo, si dos llamadores invocan a LdapContext.getRequestControls(), entonces el Control[] que recibe cada uno es su propia copia. Cada llamador puede manipular ese resultado sin afectar al otro llamador. De forma similar, si dos llamadores invocan a Context.getEnvironment(), entonces el java.util.Hashtable que recibe cada uno puede ser manipulado independientemente sin que el otro llamador se vea afectado.

Para soportar este comportamiento, el proveedor de servicio normalmente necesita clonar un resultado mutable (que puede ser devuelto a varios llamadores) antes de devolverlo.


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