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.
|