Remote Method Invocation (RMI) er en mekanisme som gjør at et klientobjekt i én prosess kan påkalle metoder på et serverobjekt i en annen prosess på tvers av nettverket. Klient- og serverobjektene kommuniserer gjennom en protokoll kalt
Java Remote Method Protocol (JRMP) .
Slik fungerer RMI i distribuerte systemer:
1. Stubbgenerering: RMI-kompilatoren genererer en stub-klasse på klientsiden som fungerer som en proxy for det eksterne objektet. Stubbklassen inneholder de samme metodene som det eksterne grensesnittet.
2. Ekstern objektregistrering: Serverobjektet registrerer seg selv i et register, som er en tjeneste som vedlikeholder en tilordning av objektnavn til objektreferanser.
3. Klientpåkallelse: Når klientobjektet kaller en metode på det eksterne grensesnittet, blir anropet fanget opp av stubben. Stubben sender deretter en forespørsel til registeret, og ber om referansen til det eksterne objektet.
4. Tjenermetodeanrop: Når registeret gir referansen, bruker stubben den til å sende metodekallet til serveren. Serveren mottar anropet og utfører metoden på det faktiske eksterne objektet.
5. Håndtering av svar: Serveren sender resultatet av metodekallet tilbake til stubben, som deretter returnerer resultatet til klientobjektet.
RMI er en mye brukt mekanisme for å bygge distribuerte applikasjoner i Java. Det gir en plattformuavhengig og språknøytral måte å påkalle metoder på objekter som kan ligge på forskjellige maskiner eller i forskjellige prosesser.