Kapitel 19. RMI - objekter over netværk

Kapitlet forudsættes ikke i resten af bogen.

Forudsætter Kapitel 12, Interfaces, Kapitel 18, Serialisering og kendskab til netværk.

RMI (Remote Method Invocation) er en måde at arbejde med objekter der eksisterer i en anden Java virtuel maskine (ofte på en anden fysisk maskine), som om de var lokale objekter.

19.1. Principper

Herunder er tegnet, hvad der sker, når en klient på maskine A laver et kald til et serverobjekt (da: værts-objekt), der er i maskine B.

Figur 19-1. Java

Serverobjektet findes slet ikke på maskine A, i stedet er der en såkaldt RMI-stub, der repræsenterer det. Når der sker et kald til RMI-stubben på maskine A, sørger den for at transportere kaldet og alle parametre til maskine B, hvor serverobjektet bliver kaldt, som om det var et lokalt kald. Serverobjektets svar bliver transporteret tilbage til RMI-stubben, der returnerer det til klienten.

Denne proces foregår helt automatisk og er usynlig for klienten såvel som serverobjektet.

RMI benytter serialisering til at transportere parametre og returværdi mellem maskinerne, så man skal huske, at alle objekter, der sendes over netværket, skal implementere Serializable-interfacet, og at variabler, der ikke skal overføres, skal mærkes med nøgleordet transient.

Overordnet set foregår det på den måde, at der defineres et interface til de metoder på serverobjektet, der skal være tilgængelige for klienten.