-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
1/23
Prctica laboratorio
Sistemas Distribuidos curso 2014/2015
Nombre : Gustavo JavierApellidos : e! ""ama
DN# : 4$0%&'54(
e)mail : *us+i,*200%-.otmailcom
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
2/23
Descripci, trabao realiado
Para a3ro,tar la realiaci, de la prctica realic u,a prueba a,terior bas,dome e, la descripci,
dada para compre,der el 3u,cio,amie,to de la misma ! para te,er u, primer co,tacto co, los
callbac+s Para ello utilic material ue e,co,tr por i,ter,er sobre todo de la p*i,a de p*i,a
6racle de soporte de ava ! varios sitios ms Adems del eemplo ue aparece e, el libroDistributed 7omputi,* ) 7o,cepts a,d applicatio, b! pro3esor 8""iu e, el sitio
.ttp://9992csuicedu/i441/8#7allbac+/
;abie,do realiado esta proto prctica co, ms 3u,cio,es ue las ue se ,os pide e, la prctica
come,c a realiar la prctica pedida
la creaci, del re*istr!>
asi*,aci, de puertos para las publicacio,es de puertos ! dems> come,c co, u,a estructura bsica
! cree las clases ue se ,os pide, para tal 3i,
(sta estructura bsica solo impleme,taba el re*istro de u, usuario
Para ello tuve ue crear a los actores i,volucrados: el usuario> el servidor ! la base de datos co, sus
respectivas co,e=io,es a travs del re*istr!
A medida ue todo 3ue 3u,cio,a,do 3ui a*re*a,do ms 3u,cio,alidades .asta lle*ar a la prctica
3i,al> pero te,ie,do por el cami,o muc.os problemas ue resolver
8i prctica co,sta de las clases obli*atorias ! al*u,as ms
7lases creadas por mi
Arc.ivador: clase ue e,capsula los datos de los usuarios
7odebase: clase ue establece la propiedad codebase
8e,sae: clase ue crea me,saes
8e,us: clase ue escribe me,us por pa,talla
Se*uidores: clase ue e,capsula la lista de se*uidores de cada usuario
Se*uridad: clase ue establece la propiedad de se*uridad
Descripci, de cada clase
Arc.ivador
#mpleme,ta Serialiable
7lase ue e,capsula los datos de los usuarios
Sus campos so, :
,ombre del usuario
?mail
?pass9ord?estado
?i,dice
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
3/23
mi
?me,saPe,d lista de me,saes pe,die,tes: arra!list ue almace,a los i,dices de los me,saes
pe,die,tes
Posee mtodos para obte,er ! actualiar los datos
Para e,te,der las dos @ltimas estructuras .a! ue e=plicar ue todos los me,saes se almace,a, e,u,a estructura *lobal do,de se asocia u, e,tero a u, me,sae 7ada ve ue al*@, usuario escribe
u, me,sae se almace,a, e, esta estructura> orde,ados se*@, precede,cia a travs de este ,dice
As e, Arc.ivador e, ve de almace,ar de ,uevo los me,saes almace,amos el i,dice del me,sae
e, la estructura *lobal As para recuperar el me,sae basta buscar el i,dice e, la estructura *lobal
de me,saes
"a clase Arc.ivador la utilia, Basededatos> Servidor ! los usuariosC Basededatos para recibir los
datos ue e,via, los usuarios> Servidor para e,viar los datos de u, usuario cua,do al*u,o lo solicita
! los usuarios para poder almace,ar ! ver sus datos
7odebase
7lase ue establece la propiedad avarmiservercodebase ecibe la i,ter3a de la clase do,de co,
su ubicaci, poder buscar las clases para car*ar ! sea, accesibles para e,viar de 3orma remota
"a clase es utiliada Basededatos ! Servidor ue so, las clases ue publica, e, el re*istr! sus
servicios para ue sea, accesibles por eemplo para suario> los servicios de Servidor ! para
Servidor los servicios de Basededatos
8e,sae
#mpleme,ta Serialiable
(,capsula los me,saes de la Basededatos .acia su receptor
true o 3alse ! u, me,sae asociado
(sta clase se utilia para e,viar respuestas de la Basededatos al Servidor ! del Servidor al suario
Posee mtodos para obte,er ! actualiar u, me,sae
8e,us
(s u,a clase au=iliar ue escribe por pa,talla los me,@s de cada actor> usuario> servidor o
basededatos
7ada actor posee su propio me,u ue se desplie*a al llamar a sus mtodos Adems posee u,mtodo para leer por teclado la opci, del me,@ ue se eli*e e, cada caso ! devolver el resultado al
actor para ue eecute la acci, ele*ida
borrar ! co,sultar estos se*uidores o la lista completa de
se*uidoresBasededatos la utilia para almace,ar los se*uidores de u, usuario
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
4/23
Se*uridad
7lase ue establece la propiedad de poltica de se*uridad utilia,do el arc.ivo /se*uridadpolic! !
crea de 3orma temporal u,a copia de este arc.ivo para ue sea accesible a la clase
Busca el arc.ivo> crea u,a copia ! la i,clu!e e, u, directorio accesible por el classpat. e,
7:sersEF,ombre usuarioEAppDataE"ocalE
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
5/23
Para e,viar u, me,sae ! su propietario:
)
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
6/23
salirHI: establece la variable de corte a 3alse para salir del se*u,do me,@ de usuario
e=itHI: a,tes de termi,ar el usuario po,e a ,ull todas sus variables ! eecuta recolector de basura !
termi,ar el .ilo
usuariosSistemaHI: devuelve u,a lista co, los usuarios re*istrados del sistema
utilia usuarios de ServicioAute,ticacio,#mpl
i,3ormacio,HI: pide la i,3ormacio, del usuario ! la escribe por pa,talla
utilia obte,erDatosHI de ServicioAute,ticacio,#mpl
lo*633HI: cambia el estado del usuario e, la BD ! si operacio, se realia sale del sistema de 3orma
se*ura tilia deslo*earHI
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
7/23
e,viar
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
8/23
De 7allbac+suario#,ter3ace
7allbac+suario#,ter3ace declara e, su i,ter3a u, solo mtodo callBac+Noti3icacio,HIue 7allbac+suario#mpl impleme,ta (ste mtodo recibe u,a cade,a> u, me,sae ! la imprime e,
pa,talla> se ,os ,oti3ica de u, me,sae e,viado por u, usuario al ue se*uimos
De actor Servidor
ServicioAute,ticacio,#mpl mtodos remotos
(sta clase .ace uso de las clases a,tes descritas Arc.ivador ! 8e,sae e implemeta la i,ter3a
ServicioAute,ticacio,#,ter3ace
"os usuarios se comu,ica, co, los mtodos remotos de ServicioAute,ticacio,#mpl ! estos a su ve
co, los servicios remotos de Basededatos para poder realiar la operativa
Para ello busca e, el re*istro> el obeto remoto :URL_Basededatos = "rmi://localhost:"+numeroDePuertoBD+"/ServicioDatos/basededatos".
"os mtodos !a los .emos ,ombrado a,tes cua,do describimos a los mtodos de suario:
lo*i,HI: e,via los datos a la BD a travs del mtodo lo*i,SistemaHI ! este devuelve u, me,sae co,
el resultado de la operaci, al usuario
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
9/23
re*istroHI:e,va los datos para re*istro a la BD a travs del mtodo re*istrarBDHI ! este devuelve
u, me,sae co, el resultado de la operaci, al usuario
usuariosHI:devuelve u,a lista de los usuarios del sistema ue e,va la BD al Servidor tilia
listarsuariosHI
estadoHI: obtie,e el estado de u,a usuario dado a travs de *et(stadoHI
deslo*earHI: a travs del mtodo salirSistemaHI e,via u,a petici, para re*istrar e, la BD la salida
del sistema ! este devuelve u, me,sae co, el resultado de la operaci, al usuarioobte,erDatosHI: obtie,e los datos de la BD co, *etDatosHI ! este devuelve u, me,sae co, el
resultado de la operaci, al usuario ue ser u,a i,sta,cia de Arc.ivador
De ServicioGestor#mpl mtodos remotos
De 3orma similar a los mtodos de SevicioAute,ticacio,#mpl pero su 3u,ci, es di3ere,te
Si SevicioAute,ticacio,#mpl se e,car*a de los datos de los usuarios> SevicioGestor#mpl se e,car*a
de todo lo relacio,ado co, los me,saes de los usuarios
(sta clase utilia las clases de apo!o 8e,saes tilia los metodos remotos de la BD ! e,va
u, callbac+ de lo la clase 7allbac+suario#mpl
"os usuarios se comu,ica, co, los mtodos remotos de ServicioGestor#mpl ! estos a su ve co,
los servicios remotos de Basededatos para poder realiar la operativa
Para ello busca e, el re*istro> el obeto remoto :URL_Basededatos = "rmi://localhost:"+numeroDePuertoBD+"/ServicioDatos/basededatos".
"os mtodos !a los .emos ,ombrado a,tes cua,do describimos a los mtodos de suario:
e,viar utilia a,adir usa cutSe*uidorHI ! recibe u, me,sae de la operacio,
mis8e,saesPe,dHI: busca los me,saes pe,die,tes de u, usuario ! le devuelve la lista co, ellos usa *etPe,die,tesHI
borrarPe,dHI: u,a ve ue el Servidor e,va los me,saes al usuario ! los lee> el usuario borra estos
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
10/23
me,saes utilia,do este mtodo ue a su ve utilia clearPe,dHI para borrarlos e, la
BD
re*istro7allbac+HI: usa add7allbac+HI para a*re*ar u, obeto remoto de ,oti3icaci, e, la BD
procede,te de u, usuario
Servidor
7lase pri,cipal del actor Servidor> posee el mai, del mismo
tilia las clases de apo!o 8e,us> Se*uridad> 7odebase
Ademas de al*u,os mtodos de la clase ServicioDatos#mpl para realiar al*u,a de sus 3u,cio,es
como devolver la lista de usuarios lo*eados
Publica sus dos servicios e, el re*istr! para ue sus mtodos sea, accesibles de 3orma remota
Sus mtodos ,o so, remotos> so, locales al Servidor:
listarsuarios"o*: lista los usuarios lo*eados e, ese mome,to tilia el mtodo lista"o*eadosHI de
la BD
i,3ormaci,: escribe por pa,talla i,3ormaci,> del ,ombre de los obetos remotos ue o3rece e,
3ormato "
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
11/23
(l actor Basededatos
"a clase ServicioDatos#mpl
Aporta los mtodos remotos a los servicios ServicioAute,ticacio,#mpl ! ServicioGestor#mpl
adems de a la clase Servidor ! a la clase Basededatos
tilia las clases de apo!o Arc.ivador> Se*uidores> 8e,sae>
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
12/23
operacio,
*et(stadoHI: devuelve el estado del usuario:
*etDatosHI: devuelve u,a estructura Arc.ivador co, los datos del usuario
Al ServicioGestor#mpl
a,adir utilia,do el callbac+ almace,ado e, la
estructura para ello> el me,sae siempre ue este e, estado co,ectado> si,o
almace,a e, el Arc.ivador de cada usuario u,a re3ere,cia al me,sae de la lista
*lobal de me,saes> para ue cua,do .a*a lo*i, se les e,vie,
a,adirSe*uidorHI: aKade u, se*uidor e, u,a lista de se*uidores asociada a cada usuario
cutSe*uidorHI: borra de esta estructura al se*uidor del usuario
*etPe,die,tesHI: devuelve los me,saes pe,die,tes a u, usuario dura,te el proceso de lo*i, del
mismo
clearPe,dHI: 7ua,do el usuario .a leido sus me,saes pe,die,tes este e,va u, mtodo> ue a travs
del servidor borra la lista de me,saes pe,die,tes
add7allbac+HI: aKade u, callbac+ ue e,va u, usuario al lo*earse ! lo almace,a e, u,a estructura de datos asociada al ,ombre de uie, lo e,va
(ste mtodo realia otra modi3icaci, e, el usuario 7ua,do u, usuario realia u,
lo*i, su estado es desco,ectado 7ua,do e, la BD se almace,a el callbac+ el
usuario pasa a estado co,ectado> !a ue si lo .iciese e, el mome,to del lo*i, si
tra,scurriese u, tiempo e,tre ue el estado es co,ectado ! el callbac+ ,o .a lle*ado
au,> ! el usuario del callbac+ estuviera si*uie,do a al*@, otro usuario ! este e,va
u, me,sae> ,o podra co,ectarse ! te,dramos u,a e=cepci, 7ua,do el usuario
se lo*ea el mtodo ue lo .ace i,voca tres mtodos u,o para lo*earse otro para
e,viar el callbac+ ! otro para recibir me,saes ,uevos As cua,do el primero se
eecuta co, =ito ! el se*u,do todava ,o .a lle*ado .asta la BD> a travs del
servidor> este usuario puede se*uir almace,a,do me,saes pe,die,tes ! ,o perder
,i,*u,o "ue*o cua,do el callbac+ lle*a cambia de estado a co,ectado ! lue*o
recibe la lista de me,saes pe,die,tes
"ocales a la clase
co,vert previame,te
almace,ados
respaldarBDHI: a,tes de cerrar la BD se *uarda, todas las (D e, u, arc.ivo t=t
*et"ista8e,saHI: devuelve la lista de todos los me,saes
A la clase Servidor
lista"o*eadosHI: devuelve la lista de usuarios lo*eados e, ese mome,to
A ServicioAute,ticacio,#mpl ! a Servidor
listarsuariosHI: devuelve la lista> el ,ic+> de todos los usuarios re*istrados .asta el mome,to
7lase Basededatos
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
13/23
(sta clase implemta el mai, de la BD ! publica el servicio de la misma e, el re*istr!
tilia las clases de apo!o Se*uridad> 7odebase> 8e,us> ! adems utilia al*u,os mtodos de la
clase ServicioDatos#mpl
realia varias 3u,cio,es como ver todos los me,saes del sistema ! todos los usuarios del mismo>
ademas del ,ombre del obeto remoto e, 3ormato "
rmi://localhost:"+numeroDePuertoBD+"/ServicioDatos/basededatos
6tra 3u,ci, ue realia es ue cua,do se cierra> pide la lista de usuarios lo*eados e, ese mome,to
! po,e su estado a desco,ectado> para evitar i,co,siste,cias Si la BD se cierra ! .a! usuarios
lo*eados> e,to,ces estos ,o puede, cambiar su estado> ! la sesi, uedara abierta ! ,o ,os
podramos lo*ear ,uevame,te
"os usuarios e, todo mome,to c.euea, su estado para saber si .a! al*@, problema co, la base de
datos Si la BD esta caida *e,erar u, e=cepcio, e, el usuario ! se cerrar
(structuras de datos para almace,ar los datos
Map
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
14/23
Mu,cio,amie,to
7ua,do u, usuario se re*istra sus datos se almace,a, e, datossuario e, u, Arc.ivador De a.i se
puede, recuparar
7ua,do el usuario .ace lo*i, se e,va el callbac+ ! se almace,a e, lista7allBac+ ! se recupera,
desde lista8e,saes los me,saes pe,die,tes cu!a re3ere,cia estaba e, Arc.ivador
Si u, usuario e,va u, me,sae> el me,sae se almace,a e, la lista8e,saes> la posici, ue tie,e elme,sae e, la (D ue lo co,tie,e se almace,a e, Arc.ivador> para te,er u,a re3ere,cia del me,sae
e, la lista Se busca e, la lista listaSe*uidores por su ,ic+ ! se busca, sus se*uidores ! lue*o para
cada u,o de ellos si su estado es desco,ectado> lo buscamos e, su Arc.ivador> *uardamos los
me,saes e, pe,die,tes> u,a re3ere,cia al me,sae e, lista8e,saes Si el estado es co,ectado> se
busca co, su ,ic+ e, la lista7allBac+ para obte,er el obeto remoto ! eecutar su mtodo para
devolver al usuario ue si*ue al ue .a escrito el me,sae> el me,sae
Si ueremos se*uir a u, usuario co, el ,ic+ del usuario al ue vamos a se*uir lo buscamos e,
listaSe*uidores ! a*re*amos ,uestro ,ic+ a su lista de se*uidores
Si ueremos dear de se*uir a u, usuario> co, su ,ic+ buscamos ! borramos el ,uestra de la lista
Si ueremos co,ocer todos los usuarios del sistema buscamos e, datossuario los ,ombre de los
usuarios re*istrados
7apturas de pa,talla
i,icio de la base de datos
,o e=iste, usuarios re*istrados
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
15/23
i,icio del servidor
,o e=iste, usuarios lo*eados
i,icio ! re*istro de u, usuario
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
16/23
!a aparece el usuario re*istrados
lo*i, de asd
re*istro ! lo*i, de 9ert
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
17/23
se*uir a 9ert ! recepcio, del me,sae de 9ert
9ert e,via u, me,sae
asd se lo*ea ! recibe el me,sae pe,die,te> 9ert vuelve a escribir ! asd vuelve a recibir el
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
18/23
me,sae de 3orma automatica
lista de usuarios lo*eados ! de me,saes del sistema
asd se .a deslo*eado ! se ve, desde 9ert todos los usuarios del sistema
asd ! 9ert se .a, deslo*eado el servidor ! la basededatos de .a, cerrado> se .a, vuelto a po,er e,
-
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
19/23
3u,cio,amie,to ! se ve, los usuarios re*itrados los me,saes ! ue ,o .a! usuarios lo*eados
7o,clusio,es:
Para los ue ,o estamos acostumbrados al mu,do ava ! mas a 8# es u, desa3o compre,der los
co,ceptos para lue*o aplicarlos 7o, el tiempo los co,ceptos se asie,ta, ! las cosas parece, ms
3ciles (, i,ter,et .a! muc.a i,3ormaci, al respeto de ava> eemplos de 8# ! de callbac+s
Pero si, duda el video de Merm, ! las vdeo tutorias me .a, sido mu! @tiles pero sobre todoe=perime,tar u, poco co, las .erramie,tas Nu,ca .aba usado eclipse ! e, esta ocasi, lo .e
utiliado ! el resultado .a sido mu! bue,o uias 3alta, e=plicar u, poco meor lo de los classpat.
ue da, muc.o dolor de cabea
Pero e, de3i,itiva .a sido u, proceso e,trete,ido
8todos de las clases
Arc.ivador
void addIndiceTrino(int indice)
void addPendiente(int indice)
void borraListaPend()
String getEstado()
Integer getIndicePend(int indice)
Integer getIndiceTrino(int indice)
int getLargoLista()
int getLargoListaPend()
String getMail()
String getNombre()
String getPassword()
void setEstado(Stringestado)
void setMail(Stringmail)
void setNombre(Stringnombre)
void setPassword(Stringpassword)
http://c/practica4/doc/Archivador.html#addIndiceTrino(int)http://c/practica4/doc/Archivador.html#addPendiente(int)http://c/practica4/doc/Archivador.html#borraListaPend()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getEstado()http://download.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=truehttp://c/practica4/doc/Archivador.html#getIndicePend(int)http://download.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=truehttp://c/practica4/doc/Archivador.html#getIndiceTrino(int)http://c/practica4/doc/Archivador.html#getLargoLista()http://c/practica4/doc/Archivador.html#getLargoListaPend()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getMail()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getNombre()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getPassword()http://c/practica4/doc/Archivador.html#setEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setMail(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setNombre(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setPassword(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#addIndiceTrino(int)http://c/practica4/doc/Archivador.html#addPendiente(int)http://c/practica4/doc/Archivador.html#borraListaPend()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getEstado()http://download.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=truehttp://c/practica4/doc/Archivador.html#getIndicePend(int)http://download.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=truehttp://c/practica4/doc/Archivador.html#getIndiceTrino(int)http://c/practica4/doc/Archivador.html#getLargoLista()http://c/practica4/doc/Archivador.html#getLargoListaPend()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getMail()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getNombre()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#getPassword()http://c/practica4/doc/Archivador.html#setEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setMail(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setNombre(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.html#setPassword(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true -
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
20/23
Basededatos
static void informacion()
static void listarTrinos()
static void listarUsuarios()
static void main(String[] args)
7allbac+suario#mpl
void callBackNotificacion(Stringmensaje)
7odebase
static voidsetCodeBase(Class c)
8e,us
String leerTeclado()
void menuBD()
void menuCliente1()
void menuCliente2()
void menuer!idor()
8e,sae
String get"es#uesta()
String getTe$to()
void set"es#uesta(Stringrespuesta)
void setTe$to(Stringtexto)
Se*uidores
void addeguidor(Stringusuario)
void borrareguidor(Stringseguidor)
rra!"ist< getListaeguidores()
http://c/practica4/doc/Basededatos.html#informacion()http://c/practica4/doc/Basededatos.html#listarTrinos()http://c/practica4/doc/Basededatos.html#listarUsuarios()http://c/practica4/doc/Basededatos.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/CallbackUsuarioImpl.html#callBackNotificacion(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Codebase.html#setCodeBase(java.lang.Class)http://download.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Menus.html#leerTeclado()http://c/practica5/doc/Menus.html#menuBD()http://c/practica5/doc/Menus.html#menuCliente1()http://c/practica5/doc/Menus.html#menuCliente2()http://c/practica5/doc/Menus.html#menuServidor()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#getRespuesta()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#getTexto()http://c/practica6/doc/Mensaje.html#setRespuesta(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#setTexto(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#addSeguidor(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#borrarSeguidor(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://c/practica4/doc/Seguidores.html#getListaSeguidores()http://c/practica6/doc/CallbackUsuarioImpl.html#callBackNotificacion(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#getRespuesta()http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#getTexto()http://c/practica6/doc/Mensaje.html#setRespuesta(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Mensaje.html#setTexto(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Codebase.html#setCodeBase(java.lang.Class)http://download.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Menus.html#leerTeclado()http://c/practica5/doc/Menus.html#menuBD()http://c/practica5/doc/Menus.html#menuCliente1()http://c/practica5/doc/Menus.html#menuCliente2()http://c/practica5/doc/Menus.html#menuServidor()http://c/practica4/doc/Basededatos.html#informacion()http://c/practica4/doc/Basededatos.html#listarTrinos()http://c/practica4/doc/Basededatos.html#listarUsuarios()http://c/practica4/doc/Basededatos.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#addSeguidor(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#borrarSeguidor(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://c/practica4/doc/Seguidores.html#getListaSeguidores() -
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
21/23
String>
String geteguidor(int indice)
Se*uridad
tatic String getLocation%fPolic&'ile()
static void main(String[] args)
Servidor
static void informacion()
static void listarUsuariosLog()
static void main(String[] args)
ServicioAute,ticacio,#mpl
#ensaje deslogear(Stringnombre)
String estado(Stringusuario)
#ensaje login(Stringusuario$ Stringcontrasena)
rc%ivador obtenerDatos(Stringusuario)
#ensaje registro(Stringnic&$ Stringnombre$ Stringmail$
Stringpassword)
rra!"istusuarios
ServicioDatos#mpl
void addCallback(Stringusuario$
Callbac&'suarioInteraceobjCallbac&)
#ensaje anadireguidor(Stringseguidor$ StringaSeguir)
void anadirTrino(rinotrino)
void cargarBD()
void clearPend(Stringusuario)
http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#getSeguidor(int)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Seguridad.html#getLocationOfPolicyFile()http://c/practica6/doc/Seguridad.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Servidor.html#informacion()http://c/practica5/doc/Servidor.html#listarUsuariosLog()http://c/practica5/doc/Servidor.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#deslogear(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioAutenticacionImpl.html#estado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#login(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Archivador.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#obtenerDatos(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#registro(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioAutenticacionImpl.html#usuarios()http://c/practica4/doc/ServicioDatosImpl.html#addCallback(java.lang.String,%20CallbackUsuarioInterface)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/CallbackUsuarioInterface.htmlhttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#anadirSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#anadirTrino(Trino)http://c/practica4/doc/Trino.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#cargarBD()http://c/practica4/doc/ServicioDatosImpl.html#clearPend(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica6/doc/Seguridad.html#getLocationOfPolicyFile()http://c/practica6/doc/Seguridad.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#deslogear(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioAutenticacionImpl.html#estado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#login(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Archivador.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#obtenerDatos(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioAutenticacionImpl.html#registro(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioAutenticacionImpl.html#usuarios()http://c/practica5/doc/Servidor.html#informacion()http://c/practica5/doc/Servidor.html#listarUsuariosLog()http://c/practica5/doc/Servidor.html#main(java.lang.String[])http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Seguidores.html#getSeguidor(int)http://c/practica4/doc/ServicioDatosImpl.html#addCallback(java.lang.String,%20CallbackUsuarioInterface)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/CallbackUsuarioInterface.htmlhttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#anadirSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#anadirTrino(Trino)http://c/practica4/doc/Trino.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#cargarBD()http://c/practica4/doc/ServicioDatosImpl.html#clearPend(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true -
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
22/23
String con!ertirMillis(long milliseconds)
String con!ertTotring(rinotrino)
#ensaje cuteguidor(Stringseguidor$ StringaSeguir)
rc%ivadorgetDatos(Stringusuario)
String getEstado(Stringusuario)
rra!"ist
getListaMensa()
rra!"ist getMiseguidores(Stringusuario)
rra!"ist
getPendientes(Stringusuario)
rra!"ist
listaLogeados()
rra!"ist
listarUsuarios()
#ensaje loginistema(Stringusuario$ Stringcontrasena)
#ensaje registrarBD(Stringnic&name$ Stringnombre$ Stringmail$
Stringpassword)
void res#aldarBD()
#ensaje saliristema(Stringnombre)
void setEstado(Stringusuario)
ServicioGestor#mpl
#ensaje addeguidor(Stringsigue$ Stringsigue)
void borrarPend(Stringusuario)
#ensaje borrareguidor(Stringsigue$ Stringsigue)
void en!iarTrino(rinotrino)
http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#convertirMillis(long)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#convertToString(Trino)http://c/practica4/doc/Trino.htmlhttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#cutSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#getDatos(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getListaMensa()http://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getMisSeguidores(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getPendientes(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#listaLogeados()http://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#listarUsuarios()http://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#loginSistema(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#registrarBD(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#respaldarBD()http://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#salirSistema(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#setEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioGestorImpl.html#addSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioGestorImpl.html#borrarPend(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioGestorImpl.html#borrarSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioGestorImpl.html#enviarTrino(Trino)http://c/practica5/doc/Trino.htmlhttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioGestorImpl.html#addSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioGestorImpl.html#borrarPend(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/Mensaje.htmlhttp://c/practica5/doc/ServicioGestorImpl.html#borrarSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica5/doc/ServicioGestorImpl.html#enviarTrino(Trino)http://c/practica5/doc/Trino.htmlhttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#convertirMillis(long)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#convertToString(Trino)http://c/practica4/doc/Trino.htmlhttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#cutSeguidor(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Archivador.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#getDatos(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getListaMensa()http://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getMisSeguidores(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#getPendientes(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#listaLogeados()http://download.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#listarUsuarios()http://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#loginSistema(java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#registrarBD(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#respaldarBD()http://c/practica4/doc/Mensaje.htmlhttp://c/practica4/doc/ServicioDatosImpl.html#salirSistema(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=truehttp://c/practica4/doc/ServicioDatosImpl.html#setEstado(java.lang.String)http://download.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true -
7/23/2019 Practica Laboratorio Sistemas Distribuidos Java RMI
23/23
rra!"ist
misMensa(esPend(Stringusuario)
void registroCallback(Stringusuario$
Callbac&'suarioInteraceobjCallbac&)