Aquest middleware utilitza rabbitmq per tal d'enviar els missatges i poder fer invocacions remotes. El seu funcionament es pot veure en el packet revo.z.sample. En ell hi tenim un unit test que serveix per comprovar si funciona una petició. En aquest cas es fa una suma 10 +20 i es comprova si s'ha fet bé la suma. En la classe servidor d'aquest paquet hi trobem dues funcions molt importants: -startRegistry -registerObject La primera crea un registre en el servidor. En fer això el que es farà serà internament inicialitzar un RequestListener. Un RequestListener és un Thread que llegeix d'UNA ÚNICA CUA a l'espera de peticions. Cada cop que es reb una petició en la cua d'RPC crea una nou thread per tal d'executar al servidor la petició. Una vegada feta, s'envia la resposta al client. El registre consta d'una taula de hash en la qual es registren els objectes segons un nom, a partir d'aquest nom el client pot fer un lookup amb el qual recupera l'objecte registrat al servidor. Ho he intentat fer calcat al model rmi. (Si més no l'exemple que vaig trobar ho feia així així que l'he imitat :P ) Per altra banda trobem la classe Client aquest bàsicament fa un getRegistry tot utilitzant uns properties ens els quals diu on ha de fer els publish i subscribes... El que fa la funció -LocateRegistry.getRegistry(env); és el següent: inicialitza un ResponseListener. Un responseListener és un ÚNIC THREAD que escolta d'UNA ÚNICA cua de respostes. Quan reb una resposta del servidor la guarda en una taula de hash. La clau en serà l'UID de la petició i l'objecte la seva resposta. Per altra banda també inicialitza un proxy el qual en l'invoke el que fa és un publish al rabbit amb la seva petició. Després s'espera una estona i comprova que la taula de hash del ResponseListener tingui la resposta a la seva petició. Una vegada la té, la retorna. Bàsicament això és el que fa el meu helloword i com està estructurat internament. L'objectiu principal de fer això era orientar-me per entendre com havia de fer les coses. Així doncs si he de canviar coses ja tinc una visió global. Serializers Para ejecutar aspectos poner en el VM arguments del cliente y del server: -javaagent:/home/gguerrero/Dropbox/pfc-superior/workspace/evocb_rabbit/lib/aspectjweaver.jar - Java - kryo https://code.google.com/p/kryo/ - YAML https://code.google.com/p/snakeyaml/ - XML http://xstream.codehaus.org/