Sistema de Nombrado en Java (JNDI) y II

Una vez que hemos procesado el sistema de nombres actual, como se describi� en la p�gina anterior, nos queda muy poco trabajo por hacer para completar la operaci�n.

Aqu� tenemos una implementaci�n de ejemplo del m�todo bind() de la secci�n anterior:

public void bind(Name name, Object bindObj) throws NamingException {
    try {
	Name[] nm = parseComponents(name);
	Name mine = nm[0];
	Name rest = nm[1];

	if (rest == null || rest.isEmpty()) {
	    // Terminal; just use head
	    bind_internal(mine, bindObj);
	} else if (rest.get(0).equals("") && rest.size() == 1) {
	    // Terminal nns
	    bind_nns(mine, bindObj);
	} else if (mine.isEmpty() || isAllEmpty(rest)) {
	    // Intermediate; resolve current components as intermediate
	    Object obj = lookup_nns(mine);

	    // Skip the leading forward slash
	    throw fillInCPE(obj, mine, rest.getSuffix(1));
	} else {
	    // Intermediate; resolve current components as intermediate
	    Object obj = resolveIntermediate_nns(mine, rest);

	    throw fillInCPE(obj, mine, rest);
	}
    } catch (CannotProceedException e) {
	Context cctx = NamingManager.getContinuationContext(e);
	cctx.bind(e.getRemainingName(), bindObj);
    }
}

Evaluando el c�digo con la cla�sula try puede ocurrir cualquiera de estas tres salidas:

Manejamos esta �ltima salida intentando encontrar un contexto de continuaci�n, usando NamingManager.getContinuationContext() o DirectoryManager.getContinuationDirContext(), bas�ndonos en la informaci�n de la CannotProceedException. Luego procedemos a llamar al mismo m�todo sobre el contexto de continuaci�n usando el nombre restante.

La aproximaci�n descrita aqu� est� fuertemente basada en lanzar y capturar una CannotProceedException. Sin embargo, no es la �nica aproximaci�n. Podr�amos conseguir el mismo resultado usando una aproximaci�n alternativa.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR