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.
Introducción
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.
El directorio de archivos no es plano, sino jerarquizado al estilo del
sistema UNIX.
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.
Discusión del interfaz de servicio
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:
"buscar" para obtener entradas de directorio;
"crear" para iniciar un archivo o un directorio nuevo;
"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".
Interfaz del servicio
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.
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.
crear -- Sirve para insertar una nueva entrada de archivo
o directorio en un directorio existente. El archivo o directorio se creará
sin contenido.
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.
eliminar -- Sirve para eliminar una entrada de archivo
o directorio existente en un directorio existente. El archivo o directorio
se creará sin contenido.
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.