1 | Aquest middleware utilitza rabbitmq per tal d'enviar els missatges i poder fer invocacions |
---|
2 | remotes. |
---|
3 | |
---|
4 | El seu funcionament es pot veure en el packet revo.z.sample. |
---|
5 | En ell hi tenim un unit test que serveix per comprovar si funciona una petició. En aquest cas es fa |
---|
6 | una suma 10 +20 i es comprova si s'ha fet bé la suma. |
---|
7 | |
---|
8 | En la classe servidor d'aquest paquet hi trobem dues funcions molt importants: |
---|
9 | -startRegistry |
---|
10 | -registerObject |
---|
11 | La primera crea un registre en el servidor. En fer això el que es farà serà internament |
---|
12 | inicialitzar un RequestListener. Un RequestListener és un Thread que llegeix d'UNA ÚNICA CUA |
---|
13 | a l'espera de peticions. Cada cop que es reb una petició en la cua d'RPC crea una nou thread |
---|
14 | per tal d'executar al servidor la petició. Una vegada feta, s'envia la resposta al client. |
---|
15 | |
---|
16 | El registre consta d'una taula de hash en la qual es registren els objectes segons un nom, |
---|
17 | a partir d'aquest nom el client pot fer un lookup amb el qual recupera l'objecte registrat al servidor. |
---|
18 | 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 ) |
---|
19 | |
---|
20 | Per altra banda trobem la classe Client aquest bàsicament fa un getRegistry tot utilitzant uns properties ens els quals diu |
---|
21 | on ha de fer els publish i subscribes... |
---|
22 | |
---|
23 | El que fa la funció |
---|
24 | -LocateRegistry.getRegistry(env); |
---|
25 | és el següent: inicialitza un ResponseListener. Un responseListener és un ÚNIC THREAD que escolta |
---|
26 | d'UNA ÚNICA cua de respostes. Quan reb una resposta del servidor la guarda en una taula de hash. |
---|
27 | La clau en serà l'UID de la petició i l'objecte la seva resposta. |
---|
28 | Per altra banda també inicialitza un proxy el qual en l'invoke el que fa és un publish al rabbit amb |
---|
29 | la seva petició. Després s'espera una estona i comprova que la taula de hash del ResponseListener tingui |
---|
30 | la resposta a la seva petició. Una vegada la té, la retorna. |
---|
31 | |
---|
32 | Bàsicament això és el que fa el meu helloword i com està estructurat internament. |
---|
33 | L'objectiu principal de fer això era orientar-me per entendre com havia de fer les coses. |
---|
34 | Així doncs si he de canviar coses ja tinc una visió global. |
---|
35 | |
---|
36 | |
---|
37 | |
---|
38 | Serializers |
---|
39 | Para ejecutar aspectos poner en el VM arguments del cliente y del server: |
---|
40 | -javaagent:/home/gguerrero/Dropbox/pfc-superior/workspace/evocb_rabbit/lib/aspectjweaver.jar |
---|
41 | |
---|
42 | - Java |
---|
43 | - kryo |
---|
44 | https://code.google.com/p/kryo/ |
---|
45 | |
---|
46 | - YAML |
---|
47 | https://code.google.com/p/snakeyaml/ |
---|
48 | - XML |
---|
49 | http://xstream.codehaus.org/ |
---|