Videregående programmering

Noter om RMI

opdateret 2. december 2001

Tilpasning af filen java.policy

På klientmaskinen ændres filen \jdk1.2.1\jre\lib\security\java.policy. Det er en almindelig tekstfil, som man kan rette med f.eks. WordPad. Følgende linier indlægges øverst i filen:

grant {

permission java.net.SocketPermission "*:1024-65535","connect,accept";

permission java.net.SocketPermission "*:80","connect";

};

Start af RMI Registry udenfor programmet

Følgende anvisninger er ikke dokumenteret i lærebog eller tutorial; men Thomas Turn (DM006) har fundet ud af det efter en række eksperimenter.

Start stifinderen og stil dig i den mappe, hvor dine programmer ligger. Herefter starter man rmiregistry ved f.eks. at indtaste følgende kommando i Programstartens Kør funktion: command

Nu startes et DOS vindue, og først kontrolleres, at man faktisk står i den ønskede mappe (directory). Hvis det er tilfældet, kan følgende kommandoer indtastes:

set classpath=.

rmiregistry 7913

 

Herefter startes Kawa udviklingsmiljøet, og følgende sætninger tilføjes til server applikationens main metode:

RMIServer theServer = new RMIServer();

String name = "rmi://localhost:7913/RMIServer";

Naming.rebind(name,theServer);

 

Metoderne i det distribuerede objekt er ikke thread-safe

Opmærksomheden henledes på, at metoderne i et distribueret RMI objekt ikke er thread-safe - d.v.s. at objektet skal designes, som om det var en monitor, hvor metoderne skal være synkroniseret. Denne viden stammer fra min kollega, Peter Kjærsgaard, som har forsket i, hvad der sker, når flere klienter samtidig aktiverer metoder i et distribueret objekt.

 

Swing komponenter og Security Manager

Anders Riis og jeg har udforsket et muligt problem omkring anvendelsen af visse Swing komponenter i relation til RMI's Security Manager. Problemet opstod i relation til metoden setText på komponenten JTextPane, hvor Security Manageren kastede en exception. I stedet for jTextPane blev AWT komponenten TextArea forsøgt anvendt, og problemet forsvandt.