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:
- den initierer en forbindelse med ekstern Virtuell Maskin (jvm),
- den skriver og overfører (marshals) parametrene til den eksterne Virtuelle Maskinen (JVM),
- den venter på resultatet
- den leser (unmarshals) returverdien eller unntaket, og
- 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:
- den leser parameteren for den eksterne metoden
- den påberoper metoden på det faktiske eksterne objektet, og
- 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.
Forstå krav til distribuerte applikasjoner
Hvis et program utfører disse oppgavene, kan det distribueres søknad.
.
- applikasjonen må finne den eksterne metoden
- den må gi kommunikasjonen med de eksterne objektene, og
- 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.
- Opprett det eksterne grensesnittet
- Gi implementeringen av det eksterne grensesnittet
- Kompilere implementeringsklassen og opprett stubben og skjelettobjektene ved hjelp av rmic-verktøyet
- Start registertjenesten med rmiregistry tool
- Opprett og start det eksterne programmet
- 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.
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
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.
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
5) Opprette Og kjøre Serveren
Fil: MyServer. java
6) Opprette Og kjøre Klienten
Fil: MyClient. java