Ekstern metodeinnkalling

Remote Method Invocation ( RMI , tysk om "Calling remote method"), noen ganger referert til som ekstern metodeinnkallelse kalt, kaller en metode for et eksternt Java - objekt og implementerer Java sin egen måte å ringe eksternt på . "Fjernkontroll" betyr at objektet kan være lokalisert i en annen Java Virtual Machine , som igjen kan kjøre på en ekstern datamaskin eller på den lokale datamaskinen. Her ser samtalen til det anropende objektet (eller programmereren) ut som en lokal samtale, men har spesielle unntak ( unntak ) som blir snappet opp, som for eksempel kan signalisere en frakobling.

klientsiden tar den såkalte stubben seg av nettverkstransport. Den stump må være tilgjengelig for kunden enten lokalt eller over nettverket. Før utgivelsen av Java 2 Standard Edition (J2SE) i versjon 1.5.0, var stubben en klasse opprettet med RMI-kompilatoren rmic . Fra versjon 1.5 er det ikke lenger nødvendig å ringe RMI-kompilatoren rmic . Java Virtual Machine tar seg av opprettelsen av stubben .

Selv om eksterne objekter også kan leveres av et eksternt objekt som allerede er kjent i programmet, kreves adressen til serveren og en identifikator (en RMI URL) for den første tilkoblingen. En navnetjeneste på serveren returnerer en referanse til det eksterne objektet for identifikatoren. For at dette skal fungere, må det eksterne objektet tidligere ha registrert seg med navnetjenesten på serveren under dette navnet. RMI-navnetjenesten java.rmi.Namingadresseres ved hjelp av statiske metoder fra klassen . Navnetjenesten implementeres som et frittstående program og kalles RMI-registeret .

Kommunikasjonsprotokoll

RMI betegner også en kommunikasjonsprotokoll basert på TCP / IP og JRMP , som brukes til eksterne samtaler mellom Java-objekter, og et Java standard klassebibliotek som disse samtalene kan implementeres med. Dette klassebiblioteket er en del av J2SE . Alternativt kan IIOP også brukes som kommunikasjonsprotokoll. To porter er reservert for RMI . Port 1099 er reservert for RMI-registeret, dvs. navnetjenesten. Port 1098 er reservert for aktivatoren .

Komponenter

Eksternt grensesnitt
beskriver funksjonene som er tilgjengelige på serveren og definerer dermed oppførselen til det eksterne objektet (uten å implementere det).
Eksternt objekt
representerer det eksterne objektet og er på serveren. Den implementerer det eksterne grensesnittet og oppførselen til de eksterne metodene som er tilgjengelige for klientene. En eller flere forekomster av det eksterne objektet kan opprettes av serveren. Et eksternt objekt må være avledet fra UnicastRemoteObject og må ha en parameterløs konstruktør, fordi dette kun kaller konstruktøren til UnicastRemoteObject og ellers kan kaste et RemoteException. Hver metode må erklære et RemoteException, inkludert den parameterløse konstruktøren.
Fjernreferanse
er en referanse til eksterne objekter. Klientene får fjernreferansen fra RMI-registeret.

fremgangsmåte

De 4 trinnene på RMI
  1. Serveren registrerer et eksternt objekt med RMI-registeret under et unikt navn.
  2. Klienten ser opp dette navnet i RMI-registeret og mottar en objektreferanse som må svare til det eksterne grensesnittet .
  3. Klienten kaller en metode fra objektreferansen (det eksterne grensesnittet garanterer at denne metoden eksisterer ). Et objekt av klasse X kan sendes som ennå ikke er kjent for serverens JVM (dette er mulig hvis X implementerer et grensesnitt som er kjent for serveren). I dette tilfellet laster serveren JVM klassen X dynamisk, for eksempel fra klientens webserver.
  4. Serveren JVM utfører metoden på det eksterne objektet ved hjelp av dynamisk lastet ekstern kode (f.eks. Metoder fra X), som vanligvis er underlagt sikkerhetsbegrensninger. Returverdiene til denne samtalen sendes til klienten, eller klienten mottar en feilmelding (f.eks. Hvis forbindelsen avbrytes).

Aktivering

Aktivering er tilgjengelig som et supplement til RMI . I likhet med RMI-registeret er dette også et sentralt kontaktpunkt for RMI-klienter. Imidlertid kan Activator også opprette RMI-serverobjekter og starte nye virtuelle maskiner .

Se også

weblenker