Servicio de directorio para un servicio remoto de acceso a ficheros textuales.

Asignatura: Sistemas Distribuidos. (Curso: 98-99)

Ingeniero Técnico en Informática.

 
Esta práctica se entregará con el plazo límite del momento de la realización del examen de la convocatoria de septiembre de esta asignatura. Se entregará en disquete, preferentemente, o vía correo electrónico a los profesores de la asignatura.
  1. Introducción

  2. Este sistema implementa un servicio de directorio simplificado, adaptado al que se describe en la práctica anterior (convocatoria de Junio) que consiste en un servicio remoto de acceso a ficheros textuales. El alumno debe entregar la práctica anterior ampliada con este nuevo servicio.
    Este servicio debe integrarse con el descrito en la práctica anterior y trata de eliminar ciertas limitaciones indicadas en el servicio de archivo del caso anterior.
    1. El directorio de archivos no es plano, sino jerarquizado al estilo del sistema UNIX.
    2. Existe un directorio de usuarios, donde figura únicamente el permiso de acceso al servicio de archivos planos y si éste es de lectura y escritura.

  3. Discusión del interfaz de servicio

  4. Con el fin de simplificar el trabajo, el interfaz de servicio del servidor de acceso a ficheros textuales no se modifica, salvo en la operación  "abrir" que recibirá un argumento más con el nombre del usuario, y que deberá contrastar con la lista de acceso para los usuarios.
    Este servicio deberá incluir al menos las facilidades:
    1. "buscar" para obtener entradas de directorio;
    2. "crear" para iniciar un archivo o un directorio nuevo;
    3. "eliminar" para destruir un archivo o un directorio.
    Al igual que la práctica anterior, se implementará utilizando el lenguaje de programación Java, mediante RMI. En consecuencia se implementará una nueva clase, llamémosla por ejemplo "DirectorioArchivoTexto", que encapsulará el interfaz de programación del servicio de directorio.
    Como consecuencia de la ampliación del servicio "ArchivoTexto" con usuarios, en éste servicio aparecerá una nueva excepción que habrá que incluir, cual es "ATNoAutorizadoExcepcion" que indicará el que el usuario no esté autorizado a leer y/o manipular un archivo. Esta excepción tiene su contraparte en el servicio de directorio, y se denominará "DATNoAutorizadoExcepcion".

  5. Interfaz del servicio
    1. buscar -- Sirve para obtener por orden cada una de las entradas de un directorio, cuyo nombre se indica como argumento. La primera vez que se invoca con el nombre de un directorio, proporciona la primera entrada del directorio. La siguientes veces que se invoca con el mismo nombre de directorio proporciona las siguientes entradas, por orden.

    2. Argumentos:
        nombreDirectorio (input): nombre del directorio.
        nombreUsuario (input): nombre del usuario del servicio.
        nombreEntrada (output): nombre de una entrada del directorio. Retorna null si no hay más entradas en el directorio.
      Excepciones:
        DATNoAutorizadoExcepcion: Si el usuario no está autorizado.
        DATNoEncontradoExcepcion: Si el directorio no existe.
        DATExcepcion: Se notificará si hubo otro error cualquiera.

    3. crear -- Sirve para insertar una nueva entrada de archivo o directorio en un directorio existente. El archivo o directorio se creará sin contenido.

    4. Argumentos:
        nombreDirectorio (input): nombre del directorio donde se inserta la entrada.
        nombreNuevo (input): nombre de la entrada nueva.
        nombreUsuario (input): nombre del usuario del servicio.
        tipo (input): puede ser uno de dos valores {DIRECTORIO, ARCHIVO}.
      Excepciones:
        DATNoAutorizadoExcepcion: Si el usuario no está autorizado.
        DATNoEncontradoExcepcion: Si el directorio no existe.
        DATExcepcion: Se notificará si hubo otro error cualquiera.

    5. eliminar -- Sirve para eliminar una entrada de archivo o directorio existente en un directorio existente. El archivo o directorio se creará sin contenido.

    6. Argumentos:
        nombreDirectorio (input): nombre del directorio donde se inserta la entrada.
        nombreEntrada (input): nombre de la entrada a eliminar.
        nombreUsuario (input): nombre del usuario del servicio.
      Excepciones:
        DATNoAutorizadoExcepcion: Si el usuario no está autorizado.
        DATNoEncontradoExcepcion: Si el directorio no existe.
        DATExcepcion: Se notificará si no pudo leerse el directorio.