Extendiendo el espacio de tuplas simple sobre
Java-RMI
El objetivo acutual consiste en ampliar el
trabajo
anterior incluyendo nuevas funcionalidades al espacio
de tuplas. Tales son: añadir expresiones
regulares a los nombres de los objetos del
espacio, permitir que dos tuplas tengan el
mismo nombre, añadir el tiempo de escritura
de una tupla en el espacio y permitir que
una tupla caduque. Todas ellas modificaciones
sencillas y y de fácil implementación
en Java sobre RMI. Hay que incluir un cliente/s
donde se muestren las nuevas funcionalidades
(por supuesto!) y estos se podrán
programar libremente como applets o aplicaciones
aisladas.
Introducción y motivación.
Ya hemos dicho que los espacios de tuplas
son un mecanismo simple de comunicación
en una colectividad de agentes. En el trabajo
anterior encontramos las funcionalidades
elementales de tales construcciones
-
leer: dado un nombre leer el valor asociado.
escribir: dado un nombre, modificar el
valor asociado, en caso de existir el par. Si no existiera
el par se puede crear uno.
tomar: dado un nombre se lee el valor asociado
y se destruye la copia del espacio.
Se pueden añadir más funcionalidades,
como la posibilidad de notificar modificaciones,
transacciones, servicio de directorio, etc.
Entre ellas se encuentran las que se proponen
para este trabajo:
- Modificar leer y tomar de modo
que acepten como nombre una expresion
regular. Las primitivas devuelven el valor
asociado a la primera tupla que concuerde
con la expresion regular.
- Modificar las tres primitivas de modo que
sea posible que dos o más tuplas compartan
el mismo nombre. Claro es que a la hora de
realizar cualquier operación sobre
ellas, estarán ordenadas internamente por orden de
llegada, y siempre accederemos a la primera (antigua) de las
tuplas.
¿Para qué puede servir esto? pues, por ejemplo,
para establecer un canal de comunicación:
- un cliente escribe tuplas en el espacio usando
siempre el mismo nombre,
- otro cliente toma las tuplas del espacio
usando el mismo nombre
- Resultado: el nombre de la tupla actua como
nombre de un canal através del cual
ambos
clientes del espacio envían/leen objetos
ordenadamente, como un stream de objetos.
- Incluir el momento de creación de una tupla,
de modo que al leer y tomar una tupla
se pueda añadir un parámetro
de tiempo que indicará que sólo se quiere
acceder a tuplas más modernas que ese
tiempo
indicado.
- Por último, teniendo en cuenta que al crear
la tupla se añade un tiempo, permitir incluir
(potestativamente) un parámetro que le
indicaráa
al espacio de tuplas cuándo cierta tupla
ha expirado.
El servidor la borrará él solito cuando
esta condición se cumpla.
Sugerencias
- Sírvase construir una clase para el
espacio, y recuerde:
- que es posible añadir elementos estáticos !!
- que es posible sincronizar el acceso a la
clase o a métodos aislados (monitores).
- Empiece construyendo una aplicación
no distribuida, donde el proceso comienza
arreglando los aspectos relativos al espacio
de nombres, y más adelante se desdobla
en varias hebras (threads) que servirían
como clientes.
- Más tarde, distribuya la aplicación.
- Muy importante: vaya documentando en documentos
html el trabajo que va realizando.Muy importante:
vaya documentando en documentos html el
trabajo
que va realizando.
- MAS IMPORTANTE (todavía): la aplicación
es muy sencilla, no se desanime y no se lie
y ...
- Notifíqueme por correo electrónico cuando
la haya depositado en duero
- VERIFIQUE que es accesible vía HTTP.
- Dígamelo el día del examen ¡en persona!
para que yo pueda tomar nota y cerciorarme.
Fechas de entrega
El trabajo puede entregarse hasta el día
del examen de Septiembre del año 2000 y me
lo notificará en el momento de realizarse
el examen escrito además de mediante un
correo electrónico a la direcci´on
cllamas@infor.uva.es,
recuerde que en duero no funciona el correo
electrónico.
Se entregará la documentación y archivos fuente
en formato html en los archivos que se desee, siempre que sean
accesible vía el servidor web de duero y se notifique el
nombre de dichos archivos. (cerciórese de que dichos
documentos son accesibles!!)
- Disposición final: En caso de ser modificada la fecha
de entrega, se notificaría en este mismo lugar, con
antelación a la fecha de entrega que figura en el punto de
arriba.