practica laboratorio sistemas distribuidos java rmi

Upload: javier-rey

Post on 16-Feb-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 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&)