Programación en castellano
Inicio > Tutoriales > Lenguajes orientados a objeto > J2EE > Sistema de Nombrado en Java (JNDI) y II
-Tutoriales

Sistema de Nombrado en Java (JNDI) y II


Métodos de Actualización

Un contexto se actualiza usando las siguientes operaciones:

Si estos métodos son soportados y cómo depende del servicio de nombres/directorio subyacente. Una implementación de contexto real actualizaría el servicio de nombres/directorio subyacente. Una implementación de contexto para un servicio de sólo lectura, por ejemplo, no soportaría ninguno de estos métodos. Una para un espacio de nombres plano, como el ejemplo del espacio de nombres plano no soportaría createSubcontext() ni destroySubcontext().

Truco de Implementación:

bind() y rebind() pueden aceptar null como el parámetro objeto si la implementación de contexto sólo acepta añadir un nombre a un espacio de nombres sin un objeto asociado.

En el ejemplo del espacio de nombres plano, bind(), rebind(), y unbind() están implementadas casi como lookup(), excepto en que actualizan la estructura de datos interna en lugar de leer de ella. Aquí tenemos la definición de rebind():

public void rebind(Name name, Object obj) throws NamingException {
    if (name.isEmpty()) {
        throw new InvalidNameException("Cannot bind empty name");
    }

    // Extract the components that belong to this namespace
    String nm = getMyComponents(name);

    // Add the object to the internal hash table
    bindings.put(nm, obj);
}

. Renombrar

rename() nos permite renombrar entre diferentes contextos. Una implementación real podría tener problemas al soportar esto totalmente porque el servicio de nombres/directorio subyacente podría no sopotarla. Algunos servicios podría soportar sólo el renombrado dentro del mismo contexto. En este caso, el propio servicio podría indicar un error y resultaría en una excepción específica del servicio; o, la implementación de contexto podría detectar el problema y lanzar una OperationNotSupportedException.

Aquí tenemos la definición de rename() para el ejemplo del espacio de nombres plano:

public void rename(Name oldname, Name newname) throws NamingException {
    if (oldname.isEmpty() || newname.isEmpty()) {
        throw new InvalidNameException("Cannot rename empty name");
    }

    // Extract the components that belong to this namespace
    String oldnm = getMyComponents(oldname);
    String newnm = getMyComponents(newname);

    // Check whether the new name exists
    if (bindings.get(newnm) != null) {
        throw new NameAlreadyBoundException(newname.toString() +
                                            " is already bound");
    }

    // Check whether the old name is bound
    Object oldBinding = bindings.remove(oldnm);
    if (oldBinding == null) {
        throw new NameNotFoundException(oldname.toString() + " not bound");
    }

    bindings.put(newnm, oldBinding);
}
 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados