07. januar 2007 - 03:05Der er
15 kommentarer og 1 løsning
Lidt hjælp til programmerings opgave i JavaRMI
Hej jeg vil gerne have lidt hjælp til en programmeringsopgave. Jeg skal implementere Bully Algoritme. dvs en distribueret algoritme der fungerer i et distribueret netværk. Algoritmen betår af forskelige processer der kører på forskellig maskiner. Jeg kan dog simplificere dette ved, at lade mine proesser køre på den samme maskine(har kun en PC), så længe de er i seperate adresse rum/space.
Hvordan simulerer man det i JavaRMI. Jeg kan godt have flere klienter og servere kørende, med de kører vel alle samme under den samme JVM og i det samme adresserum ? Nogle ideer ?
Arne tillader mig at spørge lidt mere. Har virkelig ligget søvnløs over den her problematik. Jeg skal lave den her BullyAlgoritme. Problemet er bare at jeg hveren har en server eller en client. Mit program er en Node, der kan kommuninere med de andre noder i mit distribuerede system. Hver node har et ID( som den får definere via main - args[]) Så det jeg gør er at have en instans af en masse Noder der indbyrdes skal kunne kommunikere. For at kunne kommunikere skal der vel være callback i RMI ? MEN ved callback sender jeg klientens classnavn over som parameter ?. Mit problem er så at hvis jeg gør det så sender jeg parameteren (Node) over till serveren som også er en klasse af type MODE. Det er her filmen knækker. Jeg har seriøst ikke en ide om hvad jeg kan gøre for at undgår dette problem Tillader mig at smide min kode ( som dog virker uden brug af RMI) Så kan man da se hvad jeg mener kodemæssigt.
package alm; import java.io.IOException; public class Bully { public static void main(String[] args) throws IOException { final int n = 9; final int [] value = {11,9,17,6,15,19,2,12,7}; Participant[] part = new Participant[n];// array af typen MessageQueue[] q = new MessageQueue[n];
for det første sender du aldrig det rigtige objekt med over - du sender et proxy objekt (en stib) for det rigtige objekt over
med hensyn til "alle er lige" problemet, så har du vel 3 muligheder: 1) topologien er statisk defineret via konfigurations filer 2) topologien detected automatisk via noget multicast 3) der er en koordinations server som alle connecter til og får topologi fra
nej ikke helt jeg vill bare lave en RMI server med 2 metoder registerMe og giveMeAllNodes som alle noderne så brugte til at finde ud af hvem de kan snakke med
Hej Arne Så har jeg lavet en RegisterServer med metoderne
public synchronized List giveMeAllNodes()throws RemoteException register(Node n) unregister(Node n)
Når jeg nu laver et lookup(dvs en client) på den her server får clienten en List retur indeholdende objekter. Når så min node1 f.eks vil kalde alle de andre noder, kan jeg så traversere min liste og kalder alle de objekter der er i denne liste ?
I så fald betyder det vel at jeg vil have en server - RegisterServer og alle mine Noder som er klienter. Så når jeg vil starte en Node skal jeg lave lookup på RegisterServer og derved får jeg alle remotobjekter på alle de Noder der har registreret sig på serveren. Skal hver Node så ikke registrere sig i rmiregistry for at modtage kald fra andre klienter ?
det gjorde jeg for en uge side - og det er ogsaa accepteret - saa all set
Synes godt om
Ny brugerNybegynder
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.