Red de conocimiento del abogados - Ley de patentes - Programación java avanzada: desarrollo de aplicaciones basadas en JNDI

Programación java avanzada: desarrollo de aplicaciones basadas en JNDI

Desarrollo de aplicaciones basado en JNDI

JNDI (The Java Naming and Directory Interface Java Naming and Directory Interface) es un conjunto de API para acceder a servicios de nombres y directorios en aplicaciones Java. El servicio Vincular nombres y objetos nos permite acceder a objetos por nombre. El servicio de directorio es un servicio de nombres. En este servicio, los objetos no solo tienen nombres sino también atributos.

Los servicios de nombres o directorios le permiten almacenar * de forma centralizada. ** Tener información es importante en las aplicaciones de red porque hace que dichas aplicaciones estén más coordinadas y sean más fáciles de administrar. Por ejemplo, la configuración de la impresora se puede almacenar en un servicio de directorio para que puedan ser utilizadas por aplicaciones relacionadas con la impresora.

Este artículo utiliza código Proporciona un tutorial rápido con ejemplos para empezar a utilizar JNDI

l Proporciona una descripción general de JNDI l Describe las características de JNDI l Experiencias desarrollando aplicaciones con JNDI l Muestra cómo utilizar JNDI para acceder Servidores LDAP como Sun ONE Directory Serverl Muestra cómo utilizar JNDI para acceder a los servicios JEEl Proporciona código de muestra que puede adaptar a sus propias aplicaciones

Descripción general de JNDI

Todos usamos servicios de nombres sin saberlo todos los días. Por ejemplo, cuando ingresa una URL en un navegador web, DNS (Sistema de nombres de dominio) convierte el nombre de la URL simbólica en un identificador de comunicación (dirección IP) en el sistema de nombres. ser un nombre en un registro DNS, un componente EJB (Enterprise JavaBeans Component) en el servidor de aplicaciones, o un perfil de usuario en LDAP (Ligheight Directory Access Protocol)

El servicio de directorio es una extensión natural del nombre servicio entre los dos La diferencia clave es que los objetos en un servicio de directorio pueden tener atributos (por ejemplo, un usuario tiene una dirección de correo electrónico) mientras que los objetos en un servicio de nombres no tienen atributos. Según sus atributos, JNDI le permite acceder a archivos en el sistema de archivos para localizar objetos remotos registrados en RMI. Acceder a servicios de directorio como LDAP para localizar componentes EJB en la red.

JNDI es una buena opción para aplicaciones como. Lanzadores de aplicaciones cliente LDAP, utilidades de administración de red similares a navegadores e incluso libretas de direcciones.

Arquitectura JNDI

La arquitectura JNDI proporciona un conjunto de API estándar independientes del sistema de nombres. Estas API están construidas. Además de los controladores relacionados con el sistema de nombres, esta capa ayuda a conectar aplicaciones. La fuente de datos real está separada, por lo que si la aplicación accede a LDAP, RMI, DNS u otros servicios de directorio, en otras palabras, JNDI es independiente de la implementación específica del. Servicio de directorio Siempre que tenga un servicio de directorio que proporcione una interfaz (o controlador), puede utilizar el directorio como se muestra en la figura Arquitectura JNDI.

Lo importante a tener en cuenta sobre JNDI es que proporciona. una interfaz de programación de aplicaciones (interfaz de programación de aplicaciones API) y una interfaz de proveedor de servicios (interfaz de proveedor de servicios SPI). El verdadero significado de este punto es permitirle Una aplicación que interactúa con un servicio de nombres o un servicio de directorio debe tener un proveedor de servicios JNDI. este servicio. Aquí es donde entra en juego JNDI SPI. Un proveedor de servicios es básicamente un conjunto de clases. ¿Estas clases implementan JNDI para varios servicios de directorio y nombres específicos? Al igual que el controlador JDBC implementa la interfaz JDBC para varios sistemas de bases de datos específicos, como desarrollador de aplicaciones usted

No se preocupe por JNDI SPI. Solo debe asegurarse de que cada servicio de nombres o directorio que desee utilizar tenga un proveedor de servicios

J SE y JNDI

Java SDK y superior. incluir JNDI También hay una extensión estándar para JDK y la última versión de Java SDK Arquitectura de agente de solicitud de objetos comunes Servicios de objetos comunes) Proveedor de servicios de nombres l RMI (Invocación de método remoto de Java) Proveedor de servicios de registro l Proveedor de servicios DNS (Sistema de nombres de dominio)

Más proveedores de servicios

p>

Puede encontrar una lista de proveedores de servicios descargables en la siguiente URL

Quizás sea particularmente interesante el proveedor de servicios JNDI del Registro de Windows proporcionado. en la siguiente URL Este proveedor de servicios le permite acceder a Windows XP / /NT/Me/ Puede ver más información sobre controles y extensiones incluidas con el paquete de refuerzo en: Otro proveedor de servicios interesante es el proveedor de servicios de Sun que admite DSML v (Directorio). Service Markup Language) DSML El propósito es construir un puente entre los servicios de directorio y XML

API JNDI

La API JNDI consta de varios paquetes

l Nomenclatura Javax incluye acceso a clases e interfaces de servicios de nombres. Por ejemplo, define la interfaz Context, que es el punto de entrada para que el servicio de nombres ejecute consultas. El directorio de nombres Javax extiende el paquete de nombres para proporcionar clases e interfaces para acceder al servicio de directorio. Por ejemplo, agrega una nueva clase para atributos y proporciona una representación del contexto del directorio. La interfaz DirContext define métodos para verificar y actualizar las propiedades de los objetos del directorio. El evento de nombres Javax proporciona soporte para la notificación de tiempo al acceder a servicios de nombres y directorios. La clase NamingEvent está definida. Esta clase se utiliza para representar eventos generados por la interfaz NamingListener que escucha NamingEventsl Javax nombrando ldap. Este paquete proporciona soporte para operaciones y control de extensiones de versión LDAP. paquete genérico directorio de nombres javax l nombre javax spi Este paquete proporciona un método para pasar nombres javax y paquetes relacionados agrega dinámicamente soporte para acceder a servicios de nombres y directorios Este paquete se proporciona para desarrolladores interesados ​​en crear proveedores de servicios

contexto JNDI

Como se mencionó anteriormente en servicios de nombres La asociación entre un nombre y un objeto se llama enlace. Un conjunto de tales enlaces se llama contexto. El contexto proporciona resolución (es decir, una operación de búsqueda que devuelve un objeto). Otras operaciones incluyen vinculación de nombres y desvinculación. Enumere los nombres de las vinculaciones. Tenga en cuenta un contexto.

El nombre de un objeto se puede vincular a otro objeto de contexto con la misma convención de nomenclatura. Esto se denomina subcontexto. Por ejemplo, si el directorio /home en UNIX es un contexto, ¿entonces un subdirectorio relativo a este directorio es un subcontexto? Por ejemplo, los invitados en /home/guests son el subcontexto de home. En JNDI, el contexto está representado por la interfaz javax naming Context. Esta interfaz es la interfaz clave para interactuar con el servicio de nombres. interfaz que se analiza más adelante) Cada método de nomenclatura tiene dos formas sobrecargadas

l Búsqueda (nombre de cadena) acepta un nombre de cadena l Búsqueda (nombre de nomenclatura javax) acepta un nombre de estructura como CompositeName (un nombre que abarca múltiples nombres sistemas) o Componente (un nombre en un único sistema de nombres). Ambos implementan la interfaz Nombre. Un ejemplo de nombre compuesto es cn=mydir cn=Q Mahmoud ou=People. Un ejemplo de nombre postito es cn=mydir cn=Q Mahmoud. ou=People/ myfiles/max txt (aquí myfiles/max txt es el nombre del archivo que representa la segunda parte) El nombre Javax InitialContext es una clase que implementa la interfaz Context. Utilice esta clase como entrada al servicio de nombres para crear. el constructor de objetos InitialContext, use java util Hashtable u otro Establezca un conjunto de propiedades en forma de subclase (como Propiedades a continuación.

Hashtable env = new Hashtable() // select). un proveedor de servicios factory env put(Context INITIAL_CONTEXT_FACTORY sun jndi fscontext RefFSContext) // crear el contexto inicial Context contxt = new InitialContext (env)

INITIAL_CONTEXT_FACTORY especifica el nombre de la clase de fábrica en el proveedor de servicios JNDI. es responsable de crear el objeto InitialContext apropiado para su servicio. En el código anterior, la clase de fábrica especificada para el proveedor de servicios del sistema de archivos se especifica en el fragmento. La tabla muestra las clases de fábrica para los proveedores de servicios admitidos. el proveedor de servicios del sistema de archivos debe descargarse por separado de Sun J SE x no incluye estas clases.

El valor de la tabla en la tabla y debajo del valor del valor. valor del valor del valor del valor del valor Sobre RMI SUN JNDI RMI Registro RegistryContextFactory Corba Snaming CNCTXFACTORY DNS Sun JNDI DNSCONTEXTEXTEXTEXTENZHI/Program/Java/HX /201311/26774

.