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:


Políticas de Nombrado

Como se mencionó anteriormente en esta lección, el JNDI está definido independientemente de cualquier implementación de servicio de nombres o directorios. Esto permite que se pueda acceder a una gran variedad de sistemas de nombres y directorios de una forma común. Sin embargo, para ofrecer verdadera independencia, se necesitan políticas comunes que especifiquen cómo deberían usarse los nombres y directiros. Sin estas políticas, podríamos usar el mismo API para acceder a los datos, pero la forma de encontrar y utilizar esos datos sería dependiente del directorio. La falta de política es un problema no sólo para sistemas de nombres y directorios múltiples, sino también para sistemas solitarios como es el LDAP. Sin un acuerdo general sobre cómo se organizan y utilizan los datos en el directorio, un sistema sencillo se puede deteriorar facilmente hasta llegar a ser un amasijo inmanejable. Por ejemplo, supongamos que dos aplicaciones necesitan asociar datos con un usuario en un enterprise. Si cada aplicación elige su propia política de cómo nombrar y representar un usuario en el directorio, entonces el directorio contendrá dos representaciones del mismo usuario. Además, los usuarios de cada aplicación tendrán que aprenderse cada representación y cómo nombrarla.

Tipos de Políticas

Hay dos categorías de políticas.

  • Políticas de nombres que especifican cómo nombrar los objetos en relación de unos con otros y los nombres comunes a usar.
  • Políticas de directorios, llamadas esquemass, que especifican los atributos que los objetos del directorio debería tener y los nombres y las síntaxis de dichos atributos.

El LDAP define síntaxis de atributos (RFC 2252) y esquemas de relación de usuarios (RFC 2256). También están disponibles muchas otras proposiciones de esquemas específicos del dominio, como para mail y seguiridad. Además de los esfuerzos de estandarizar los esquemas a través de los diferentes sistemas de directorios (RFC 2307). Varios esquemas propietarios han emergido en el espacio LDAP de vendedores como Netscape y Microsoft. Algunas aplicaciones que están basadas en servidores de estos vendedores tienen dependencias de esquemas propietarios.

En el área de políticas de nombres, se han definido en el X.500. La mayoría de los sistemas LDAP siguen una convención de nombrado común en los niveles superiores del árbol de nombres (por ejeplo, cómo  nombrar países, organizaciones y departamentos). Existe menos acuerdo en los niveles inferiores. Sin embargo, algunos servidores, como el "Active Directory" de Microsoft, han definido sus propias políticas de nombres.

El DNS ha definido políticas de nombres en los niveles superiores del árbol de nombres. Se usa principalmente para nombrar máquinas y dominios en Internet e Intranet por eso las políticas de nombres para otras entidades son menos relevantes.

En términos de política de nombres mixtos, las URLs HTTP y FTP han configurado de echo el estándar. El primer componente de una URL nombra el host/dominio usando el DNS. Después del primer componente, hay un espacio de nombres propietario.

Políticas de nombres de la Plataforma Java 2 Enterprise Edition

El JNDI no define una política de nombres por si mismo. Sin embargo, una plataforma importante si define un conjunto limitado de políticas de nombrado para usar JNDI es la Plataforma Java 2, Enterprise Edition (J2EE). Define un espacio de nombres lógico para que componentes de  aplicaciones (como Enterprise JavaBeans, servlets, y JavaServer Pages (JSP)) puedan usar recursos de nombres y otros datos. El espacio de nombres para un componente lo proporciona su contenedor, la entidad que ejecuta el componente. Normalmente, un componente tiene un descriptor de desarrollo que contiene, junto con otros datos, información sobre los nombres y tipos lógicos de los recursos y componentes que el componente necesita o referencia. Un administrador, usando información del descriptor de desarrollo, mapea el espacio de nombres lógico para unirlos con el espacio de nombres del entorno real dentro del que se está desplegando el componente. El contenedor usa este mapeo para presentar el espacio de nombres lógico al componente. Puedes ver la especificación J2EE para más detalles.

El espacio de nombres enterprise está enraizado en un contexto URL para el esquema URL java. Por ejemplo, podríamos usar un nombre como "java:comp/env/jdbc/Salary" desde el contexto inicial para nombrar la base de datos Salary. Los detalles sobre los contextos URL se describen en la lección URLs.

Usando un contexto URL, la política evita cualquier conflicto de nombres con nombres en el contexto inicial configurado por la propiedad de entorno Context.INITIAL_CONTEXT_FACTORY.

En la raíz del contexto del espacio de nombres hay una unión con el nombre "comp", que está unida a un subárbol reservado para uniones relacionadas con componentes. El nombre "comp" es la abreviatura de componente. No hay otras uniones en el contexto raíz. sin embargo, el contexto raíz está resevado para una expansión futura de la política, específicamente para recursos de nombres que no tratan con el propio componente sino con otros tipos de entidades como usuarios o departamentos. Por ejemplo, las políticas futuras podrían permitirnos nombrar usuarios y organizaciones/departamentos usando nombres como "java:user/alice" o "java:org/engineering".

En el contexto "comp", hay dos uniones: "env" y "UserTransaction". El nombre "env" está unido a un subárbol que está reservado para uniones relacionadas con el entorno, según los definido por el descriptor de desarrollo. "env" es la abreviatira de "environment" (entorno). El J2EE recomienda (que no exige) la siguiente estructura del espacio de nombres "env".

  • Los Enterprise JavaBeans se sitúan bajo el subárbol "ejb". Por ejemplo, un EJB Payroll podría llamarse "java:comp/env/ejb/Payroll".
  • Las referencias a factorías de recursos se sitúan en subárboles diferenciados por sus tipos de manejador de recurso. Aquí tenemos algunos ejemplos.
    • "jdbc" para referencias a fuentes de datos JDBC
    • "jms" para factorías de conexiones JMS
    • "mail" para factorías de conexiones JavaMail
    • "url" para factorías de coenxiones URL

    Por ejemplo, un base de datos JDBC Salary podría tener el nombre "java:comp/env/jdbc/Salary".

El contexto "env" también podría contener uniones para otros tipos de datos de configuración (como string y envolturas para tipos de datos primitivos) que los componentes necesitan, como se define en el descriptor de desarrollo del componente. No se recomienda o necesita ninguna política para estas uniones; pueden situarse en la raíz del contexto "env" o ser divididas en subárboles basándose en sus tipos o relaciones lógicas.

Por ejemplo, podríamos tener uniones para un string y un parámetro numérico que son nombrados usando "java:comp/env/CompanyName" y "java:comp/env/PrimeRate", respectivamente.

El nombre "UserTransaction" está unido a un objeto javax.transaction.UserTransaction. El componente que busque este objeto desde el espacio de nombres usando el nombre "java:comp/UserTransaction") puede usarlo para arrancar, enviar o abortar transaciones.


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