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

Sistema de Nombrado en Java (JNDI) [Parte I]
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Límites del Sistema de Nombres

La lección ¿Qué es un nombre? explica en detalle cómo usar un nombre mixto para expresar un nombre que expande varios sistemas de nombrado. Esta sección explica cómo un proveedor de servicio determina qué componentes del nombre mixto procesar y cáales pasar.

En efecto, el proveedor de servicios necesita determinar el límite del sistema de nombres que separa unos componentes de sus vecinos (aguasabajo).

Separación Fuerte y Débil

El ejemplo de la lección ¿Qué es un nombre? tiene el siguiente nombre mixto.

cn=homedir,cn=Jon Ruiz,ou=People/tutorial/report.txt

Este nombre mixto tiene tres componentes.

cn=homedir,cn=Jon Ruiz,ou=People
tutorial
report.txt

El primer componente pertence al sistema de nombres LDAP, y el segundo pertenece al sistema de ficheros (UNIX). Como se ve en este ejemplo, un nombe mixto puede tener varios componentes (posiblemente consecutivos) del mismo sistema de nombres ("tutorial" y "report.txt" son del sistema del ficheros), pero un componente no puede expandir más de un sistema de nombres. Por eso, la correspondencia entre el separador de componentes de nombres mixtos -- barra inclinada (/)--y los límites del sistema de nombres podría ser uno-a-uno.

En esta lección, los proveedores de servicios se dividen en los que tratan el separador de componentes de nombres mixtos como un límite del sistema de nombres y los que no. Aquellos que soportan separación fuerte, y aquellos que soportan separación débil.

  • Un proveedor que soporta separación fuerte procesa un nombre mixto consumiendo el componente inicial del nombre y dejando el resto de los componentes para otro sistema de nombres.
  • Un proveedor que soporta separación débil no trata necesariamente al separador como un límite de sistema de nombres. Cuando procesa un nombre compuesto, consume tantos componentes iniciales como sea apropiado para el sistema de nombres subyacente.

El principal factor para determinar si un proveedor soporta separación fuerte o débil es la síntaxis del sistema de nombres subyacente. Si este sistema tiene un espacio de nombres plano o un espacio de nombres jerárquico con un separador de nombres compuesto que no tiene conflictos con el separador de nombres mixtos, entones el correspondiente proveedor de servicios soportará separación fuerte. De otra forma, el proveedor soporará separación débil.

Por supuesto, puede resolver este conflicto de síntaxis y soportar separación fuerte requiriendo que cualquier separador de nombre compuesto esté escapado o entrecomillado. Este requerimiento podría ser un incoveniente para los usuarios de ese proveedor pero podría ser la única forma de que algunos proveedores soporten la federación.

Entero los proveedores de servicios que soportan separación fuerte se incluyen el LDAP, el sistema de ficheros Windows y el registro RMI. El sistema de nombres LDAP es jerárquico y tiene el caracter coma (",") como separador de componentes de nombres compuestos. El sistema de ficheros Windows también es jerárquico y tiene el caracter de barra invertida ("\") como separador. Ninguno de estos separadores tiene conflictos con el separador de componentes de nombres mixtos. El espacio de nombres RMI es un espacio plano.

Los proveedores de servicios que soportan separación débil incluyen el sistema de nombres COS y el sistema de ficheros UNIX.

Condiciones para Soportar Separación Débil

La separación débil es conveniente porque hace que los nombres mixtos parezcan claros (se requieren menos escapes o comillas). También permite al usuario ser menos consciente de los límites del sistema de nombres. Sin embargo, no todos los proveedores de servicios pueden soportar separación débil. Ciertas restricciones podrían forzar a un proveedor a soportar la separación fuerte.

Por ejemplo, si la síntaxis del espacio de nombres es jerárquica y usa el caracter de la barra inclinada ("/") como separador pero su nombres se leen de derecha a izquierda, entonces el proveedor no puede usar la separación débil. Esto es porque el conflicto de dirección evita cualquier determinación sensible de los límites del sistema de nombres.

El sistema de nombres es un terminal (los componentes de ese sistema de nombres sólo pueden aparecer al final de un nombre mixto), entonces el proveedor de servicio puede soportar la separación débil. Por ejemplo, supongamos que un espacio de nombres de una aplicación de hoja de cálculo tiene una síntaxis de izquierda-a-derecha y usa la barra inclinada como separador de componentes. Supongamos también que los nombres de las celdas de la hoja de cálculo siempre serán terminales; es decir, cosas que no serán nombradas en relación a la celda de la hoja de cálculo. En este caso, el proveedor de servicios para el sistema de nombrados de la hoja de cálculo puede soportar la separación débil. Dandole un nombre mixto, consumirá todos sus componentes.

Si el sistema de nombres no es terminal pero el proveedor de servicios puede determinar sintácticamente el límite del sistema de nombres, entonces puede soportar separación débil. En este caso, el proveedor de servicio usaría una regla sintáctica para determinar cuántos componentes de un nombre mixto consumir. Por ejemplo, los componentes de un nombre compuesto podrían tener una caracterísitca distintiva que permita al proveedor seleccionar los componentes.

Como ejemplo específico, un nombre DCE X.500 se parece a esto.

c=us/o=wiz/ou=people

Un proveedor para este sistema de nombres puede soportar separación débil buscando los componentes que tienen parejas clave/valor separadas por caracteres de igual ("="). Sin embargo, restringirá los tipos de sistemas de nombres que se pueden federar directamente con este sistema de nombres. En el ejemplo anterior, un sistema de nombres que tenga nombres que consisten en parejas clave/valor separadas por caracteres de igual no puede estar federado.

Si el sistema de nombres no es terminal pero el proveedor de servicios puede determinar dinámicamente los límites del sistema de nombres, puede soportar separación débil. El sistema de nombres subyacente debe poder devolver los nombres de los componentes residuales sin resolver. Para determinar qué componentes consumir, el proveedor resolverá el nombre mixto completo y, basándose en la resolución, usará cualquier residuo para determinar qué no es un sistema de nombres.


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