Hej,
Er der nogen der har erfaring med at knytte forbindelse mellem
flere geografisk adskilte RMI servere? Jeg har 3 RMI servere
som ligger på hver deres maskine, hvor de har hver deres stubs/skels
osv. De skulle gerne arbejde sammen, så de fungerer, som både servere
og klienter.
Tunneling (fra en klient køres en metode på et server-objekt,
som så kører en metode på et andet server-objekt) skulle
kunne gøre det, hvis der bruger wait/notify for at undgå deadlock.
Jeg har ikke prøvet dette i praksis, men ved at det bruges.
En besked fra en (chat) bruger kunne også distribueres til alle
servere med en naming.lookup - f.eks., men er det en klodset/-
langsom løsning?:
// Server/client sender en besked, som modtages på både
// server/client0, server/client1 og server/client2
public class Server/Client0 {
public static void main(String[] args){
try {
ServerClient0 server0 =
(ServerClient0)Naming.lookup("rmi://host.server0/ServerClient0");
ServerClient1 server1 =
(ServerClient1)Naming.lookup("rmi://host.server1/ServerClient1");
ServerClient2 server2 =
(ServerClient2)Naming.lookup("rmi://host.server2/ServerClient2");
// kalde metoder som sender en besked til brugere på alle
// serverede
catch(Exception e) {}
}
}
Jeg er ikke klar over om naming.lookup tager lang tid, så performance
degraderes så det betyder noget. Der er tale om en chat-applikation
hvor der sendes en del beskeder frem og tilbage i systemet. Systemet
skal køre på et LAN.
Er der nogen der har svaret på dette og/eller nogle ideer om, hvordan
problemet med flere RMI servere der arbejder sammen kunne løses,
så modtages de med allerstørste taknemlighed.
Med venlig hilsen
John
|