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:


Listas de Objetos

La lección Operaciones de Nombrado nos mostró cómo listar un contexto usando los métodos Context.list() y Context.listBindings().

Esta sección describe cómo estós métodos se ven afectados por las factorías de objetos.

List

Cuando usamos Context.list(), obtenemos una enumeración de NameClassPair.

Podemos llamar a getClassName() sobre cada NameClassPair para obtener el nombre de la clase del objeto con que está unido.

Por ejemplo, si listamos el contexto que usamos para unir varios objetos en la lección Almacenar Objetos en el Directorio, obtendremos la siguiente salida.

# java List
ou=Groups: javax.naming.directory.DirContext
ou=People: javax.naming.directory.DirContext
cn=Button: java.awt.Button
cn=Flower: Flower
cn=favorite: Fruit
cn=favDrink: javax.naming.directory.DirContext
cn=RefHello: Hello
cn=CorbaHello: javax.naming.directory.DirContext
cn=RmiiiopHello: javax.naming.directory.DirContext
cn=RemoteHello: HelloImpl

Por cada unión, el nombre de la clase Java se determinó basándose en la información almacenada en el directorio, sin que sea necesario cear un ejemplar del objeto. No se ven involucradas las factorías de objetos.

Listar Uniones

Cuando usamos Context.listBindings(), obtendremos una enumeración de Binding.

Podemos invocar a getObject() sobre cada Binding para obtener el objeto en la unión. El resultado de getObject() es el mismo que el obtenido por la búsqueda del objeto usando Context.lookup().

Por ejemplo, si listamos las uniones del contexto usado para unir varios objetos en la lección Almacenar Objetos en el Directorio, obtendremos la siguiente salida.

# java -Djava.security.manager -Djava.security.policy=.policy ListBindings
ou=Groups: com.sun.jndi.ldap.LdapCtx: com.sun.jndi.ldap.LdapCtx@1dacd730
ou=People: com.sun.jndi.ldap.LdapCtx: com.sun.jndi.ldap.LdapCtx@1dacd8ae
cn=Button: java.awt.Button: java.awt.Button[button0,0,0,0x0,invalid,label=Push me]
cn=Flower: Flower: pink rose
cn=favorite: Fruit: orange
cn=favDrink: Drink: water
cn=RemoteHello: HelloImpl_Stub: HelloImpl_Stub[RemoteStub [ref: [endpoint:[129.111.111.111:44999](remote),objID.
									[-68dff7b3:d975735a08:-8000, 0]]]]
cn=RefHello: HelloImpl_Stub: HelloImpl_Stub[RemoteStub [ref: [endpoint:[129.111.111.111:45006](remote),objID.
									[2bf4308e:d975745b44:-8000, 0]]]]
cn=CorbaHello: com.sun.CORBA.idl.CORBAObjectImpl: com.sun.CORBA.idl.CORBAObjectImpl:com.sun.CORBA.idl.
									GenericCORBAClientSC@84675dd2
cn=RmiiiopHello: com.sun.CORBA.idl.CORBAObjectImpl: com.sun.CORBA.idl.CORBAObjectImpl:com.sun.CORBA.idl.
									GenericCORBAClientSC@ac6b5dd2

Observa que la entrada "cn=favDrink" y otras pocas tienen un nombre de clase más preciso ("Drink", "HelloImpl_Stub").

Esto es porque ejemplarizar un objeto (mediante la correspondiente factoría de objetos) proporciona más información de la clase. También observa que el objeto remoto HelloImpl se ha devuelto cómo un esqueleto del objeto real.

Nota 1:

Debemos ejecutar este ejemplo usando la Plataforma Java 2, v1.2, o una versión superior porque algunas de las factorías de objetos requieren esta plataforma.

Nota 2:

La opción -Djava.security.manager especifica que se usará el controlador de seguridad por defecto, y la opción -Djava.security.policy=.policy especifica qué fichero .policy se usará para política de seguridad. Estas dos opciones son necesarias cuando estámos listando/buscando objetos java.rmi.Remote. En el fichero de política, necesitamos conceder permisos para conectar y aceptar conexiones desde el servidor Web y la máquina en que se está ejecutando el objeto remoto.


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