Avatar billede simonvalter Praktikant
29. februar 2004 - 17:30 Der er 7 kommentarer og
1 løsning

observer og rmi

jeg skal lave en løsning hvor jeg benytter rmi, sockets og en masse andre sjove ting og jeg har besluttet mig for at lave en server monitor.
jeg havde tænkt mig at lave en client som registerer sig hos en central server
når den har gjordt det begynder den centrale server at checke om den kan komme i kontakt med klienten, hvis ikke er der fejl.

klienten selv checker om de services/processer den er sat til at overvåge kører, hvis ikke skal den fortælle den centrale server det.. og jeg tænkte at observer pattern var smart her.

jeg har en KlientImpl som starter en tråd med et regelmæssigt interval og laver sit check på et server objekt som indeholder service objekter.
så er det at jeg går lidt i stå for jeg havde tænkt mig at subjekt er Server objektet, men ændringen sker i servicen som har en status, så hvordan får jeg på en ordenlig måde notifyed observeren at der er sket en ændring, da den jo lytter på serveren... skal server lytte på om der er ændring i service.. dvs 2x observer ?

alle forslag er velkomne, hvis i mener jeg skal gribe det an på en anden måde så kan jeg saktens nå at lave ændringer endnu, da jeg stadig er igang med at planlægge.

og til sidst er der andre ting der kan skabe problemer når man bruger rmi til dette?
Avatar billede arne_v Ekspert
29. februar 2004 - 21:21 #1
Jeg ville nok gå efter noget lidt simplere.

Lade serveren selv checke status.

Og enten:

1)  lade client polle hver X sekunder for status

2)  lade client lave et RMI kald til server som bare venter med
    et callback object som serveren så kalder når der er et problem
    (det er en form for observer pattern)
Avatar billede simonvalter Praktikant
29. februar 2004 - 23:10 #2
ja det havde jeg også tænkt på først, men hvis den centrale server(klient) skal checke samtlige klienter i et fast interval vil der vel være en del traffik. det vil jeg få minsket ved at klienten selv fortæller den centrale server når der er sket en status ændring.

Men hvis jeg nu gør det på den her måde, hvordan ville jeg styre det problem med at jeg observerer på et server objekt men det er dens service objekter som jeg er interreseret i om de har ændret sig?

det kan godt være vi taler forbi hinanden, der bliver lidt forvirende når de både er klienter og servere og finde ud af hvilken del der bliver snakket om ;)
Avatar billede simonvalter Praktikant
29. februar 2004 - 23:15 #3
det kan godt være jeg er med.. du ville checke services, og i den logik der checker mine services, i tilfælde af fejl kalde en metode på central serveren, og bede den om selv at hente status.. og dermed undgå at notify sker fra service eller server objektet?
Avatar billede arne_v Ekspert
01. marts 2004 - 09:24 #4
Muligvis roder jeg lidt rundt i hvad der er server og klient hos dig.

Program A kører og laver noget. Program A holder selv øje med om alt er OK.

Program B laver et RMI kald til A (register). Kaldet inkluderer et callback
objekt. A gemmer referancer til alle callback objekter.

Når A opdager en fejl, så notificerer den alle B'erne via listen af
RMI callback objekter.

B'erne gør så hvad de nu måtte gøre.
Avatar billede simonvalter Praktikant
01. marts 2004 - 17:42 #5
http://gbit.dk/bla.jpg ;)
måske giver dette mening.

hvad er et callback objekt?
Avatar billede arne_v Ekspert
01. marts 2004 - 20:19 #6
Et callback objekt er en bestemt type objekt som RMI client kalder RMI server
med hvor RMI server så kan kalde remote metoder i RMI client.

Det er en standard RMI feature.

Men hvor pokker finder jeg noget beskrivelse af det ?

Jeg må se at få skrevet den "videregående RMI" artikel !

Men jeg fandt noget alligevel..

Check:
  http://www.javaworld.com/javaworld/javaqa/1999-04/05-rmicallback.html

Det lyder meget som sådan noget du vil !!
Avatar billede simonvalter Praktikant
01. marts 2004 - 20:54 #7
ok tak, ja det lyder som noget af det jeg skal have fat i.
jeg arbejder videre med det, og kommer der et problem må jeg jo lave et spm til ;)
Avatar billede arne_v Ekspert
01. marts 2004 - 22:38 #8
Du kan også bare skrive her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester