Rmi (Remote Method Invocation)

RMI (Remote Method Invocation) er EN API som gir en mekanisme for å lage distribuert program i java. RMI tillater et objekt å påkalle metoder på et objekt som kjører i en ANNEN JVM.

RMI gir ekstern kommunikasjon mellom programmene ved hjelp av to objekter stub og skjelett.

Forstå stubbe og skjelett

RMI bruker stubbe og skjelettobjekt for kommunikasjon med det eksterne objektet.

et eksternt objekt er et objekt hvis metode kan påberopes fra en ANNEN JVM. La oss forstå stubben og skjelettobjektene:

stubben

stubben er et objekt, fungerer som en gateway for klientsiden. Alle utgående forespørsler rutes gjennom den. Den ligger på klientsiden og representerer det eksterne objektet. Når den som ringer påberoper metoden på stub-objektet, gjør den følgende oppgaver:

  1. den initierer en forbindelse med ekstern Virtuell Maskin (jvm),
  2. den skriver og overfører (marshals) parametrene til den eksterne Virtuelle Maskinen (JVM),
  3. den venter på resultatet
  4. den leser (unmarshals) returverdien eller unntaket, og
  5. den returnerer endelig verdi til den som ringer.

skjelett

skjelettet er et objekt, fungerer som en gateway for server-sideobjektet. Alle innkommende forespørsler rutes gjennom den. Når skjelettet mottar innkommende forespørsel, gjør den følgende oppgaver:

  1. den leser parameteren for den eksterne metoden
  2. den påberoper metoden på det faktiske eksterne objektet, og
  3. skriver og overfører (marshals) resultatet til den som ringer.

I Java 2 SDK ble det innført en stubprotokoll som eliminerer behovet for skjeletter.stub og skjelett I RMI

Forstå krav til distribuerte applikasjoner

Hvis et program utfører disse oppgavene, kan det distribueres søknad.

.

  1. applikasjonen må finne den eksterne metoden
  2. den må gi kommunikasjonen med de eksterne objektene, og
  3. applikasjonen må laste klassedefinisjonene for objektene.

RMI-applikasjonen har alle disse funksjonene, så det kalles distribuert applikasjon.

Java Rmi Eksempel

det er gitt de 6 trinnene for å skrive RMI-programmet.

  1. Opprett det eksterne grensesnittet
  2. Gi implementeringen av det eksterne grensesnittet
  3. Kompilere implementeringsklassen og opprett stubben og skjelettobjektene ved hjelp av rmic-verktøyet
  4. Start registertjenesten med rmiregistry tool
  5. Opprett og start det eksterne programmet
  6. Opprett og start den eksterne applikasjonen klientprogram

rmi eksempel

i dette eksemplet har vi fulgt alle 6 trinnene for å opprette og kjøre Rmi-Programmet. Klientprogrammet trenger bare to filer, eksternt grensesnitt og klientprogram. I rmi-applikasjonen samhandler både klient og server med det eksterne grensesnittet. Klientprogrammet påberoper metoder på proxy-objektet, rmi sender forespørselen til den eksterne JVM. Returverdien sendes tilbake til proxy-objektet og deretter til klientprogrammet.

 rmi eksempel

1) opprett det eksterne grensesnittet

for å opprette det eksterne grensesnittet, utvide Det Eksterne grensesnittet og erklære RemoteException med alle metodene til det eksterne grensesnittet. Her lager vi et eksternt grensesnitt som utvider Det Eksterne grensesnittet. Det er bare en metode som heter add () og det erklærer RemoteException.

2) Gi implementeringen av det eksterne grensesnittet

nå gi implementeringen av det eksterne grensesnittet. For å gi implementeringen Av Det Eksterne grensesnittet, må vi

  • enten utvide UnicastRemoteObject-klassen,
  • eller bruke exportObject () – metoden I UnicastRemoteObject-klassen

hvis du utvider UnicastRemoteObject-klassen, må du definere En konstruktør som erklærer RemoteException.

3) opprett stubben og skjelettobjektene ved hjelp av rmic-verktøyet.

Neste trinn er å lage stubber og skjelettobjekter ved hjelp av rmi-kompilatoren. Rmic-verktøyet påkaller rmi-kompilatoren og skaper stubber og skjelettobjekter.

4) Start registertjenesten med verktøyet rmiregistry

start nå registertjenesten Ved hjelp av verktøyet rmiregistry. Hvis du ikke angir portnummeret, bruker det et standard portnummer. I dette eksemplet bruker vi portnummer 5000.

5) Opprett og kjør serverprogrammet

nå må rmi-tjenester være vert i en serverprosess. Navngivningsklassen gir metoder for å hente og lagre det eksterne objektet. Navngivningsklassen gir 5 metoder.

offentlig statisk java.rmi.Eksternt oppslag (java.lang.String) kaster java.rmi.NotBoundException, java. net. Misformedurlexception, java.rmi.RemoteException; den returnerer referansen til det eksterne objektet.
offentlig statisk tomrom bind (java.lang.String, java.rmi.Remote) kaster java.rmi.AlreadyBoundException, java.net.MalformedURLException, java.rmi.RemoteException; det binder det eksterne objektet med det oppgitte navnet.
offentlig statisk tomrom unbind(java.lang.String) kaster java.rmi.RemoteException, java.rmi.NotBoundException, java. net. Misformedurlexception; det ødelegger det eksterne objektet som er bundet med det oppgitte navnet.
offentlig statisk tomrom rebind(java.lang.String, java.rmi.Remote) kaster java.rmi.RemoteException, java. net. Misformedurlexception; det binder det eksterne objektet til det nye navnet.
offentlig statisk java.lang.String liste (java.lang.String) kaster java.rmi.RemoteException, java. net. Misformedurlexception; den returnerer en matrise med navnene på de eksterne objektene som er bundet i registret.

I dette eksemplet binder vi det eksterne objektet med navnet sonoo.

6) Opprett og kjør klientprogrammet

på klienten får vi stubobjektet ved hjelp av oppslag () – metoden I Navngivningsklassen og påkaller metoden på dette objektet. I dette eksemplet kjører vi server-og klientprogrammene, i samme maskin, slik at vi bruker localhost. Hvis du vil ha tilgang til det eksterne objektet fra en annen maskin, endrer du localhost til vertsnavnet (ELLER IP-adressen) der det eksterne objektet er plassert.

Utdata av dette rmi-eksemplet

 RMI RMI

Meningsfylt eksempel PÅ RMI-applikasjon med database

Tenk på et scenario, det er to programmer som kjører i forskjellige maskiner. La oss si MachineA Og MachineB, machineA ligger I Usa Og MachineB I India. MachineB ønsker å få liste over alle kunder Av MachineA søknad.

la oss utvikle rmi-programmet ved å følge trinnene.

1) Opprett tabellen

Først av alt må vi opprette tabellen i databasen. Her bruker Vi oracle10 database.

 rmi-applikasjon med database

2) Opprett Kundeklasse og Eksternt grensesnitt

Fil: Kunde.java

Merk: Kundeklassen må Være Serialiserbar.

Fil: Bank.java

3) Lag klassen som gir implementering Av Eksternt grensesnitt

Fil: BankImpl.java

4) Kompilere klassen rmic verktøy og starte registry service av rmiregistry tool

 rmi eksempel med database

5) Opprette Og kjøre Serveren

Fil: MyServer. java eksempel på ekstern metode påkalling

6) Opprette Og kjøre Klienten

Fil: MyClient. java ekte verden eksempel på rmi