RMI (Remote Method Invocation)

The RMI (Remote Method Invocation) on API, joka tarjoaa mekanismin hajautetun sovelluksen luomiseen Javassa. RMI sallii objektin käyttää menetelmiä toisessa JVM: ssä käynnissä olevaan objektiin.

RMI tarjoaa etäyhteyden sovellusten välillä käyttäen kahta objektia tynkää ja luurankoa.

tynkä ja luuranko

RMI käyttää tynkä-ja luurankokohdetta viestintään etäkohteen kanssa.

etäobjekti on objekti, jonka menetelmään voidaan vedota toisesta JVM: stä. Ymmärretään tynkä-ja luurankoesineet:

tynkä

tynkä on objekti, toimii porttina asiakaspuolelle. Kaikki lähtevät pyynnöt ohjataan sen kautta. Se sijaitsee asiakkaan puolella ja edustaa etäkohdetta. Kun soittaja vetoaa menetelmän tynkä objekti, se tekee seuraavat tehtävät:

  1. se aloittaa yhteyden kauko-virtuaalikoneeseen (JVM),
  2. se kirjoittaa ja lähettää (marshals) parametrit kauko-virtuaalikoneeseen (JVM),
  3. se odottaa tulosta
  4. se lukee (merkitsemättömät) palautusarvon tai poikkeuksen, ja
  5. se lopulta palauttaa arvo soittajalle.

luuranko

luuranko on objekti, joka toimii porttina palvelinpuolen objektille. Kaikki saapuvat pyynnöt ohjataan sen kautta. Kun luuranko vastaanottaa saapuvan pyynnön, se tekee seuraavat tehtävät:

  1. se lukee etämenetelmän parametrin
  2. se vetoaa menetelmään varsinaiseen etäkohteeseen, ja
  3. se kirjoittaa ja lähettää (marshals) tuloksen soittajalle.

Java 2 SDK: ssa otettiin käyttöön tynkäprotokolla, joka poistaa luurankojen tarpeen.tynkä ja luuranko RMI: ssä

hajautettujen sovellusten Ymmärtämisvaatimukset

jos jokin sovellus suorittaa nämä tehtävät, se voidaan jakaa sovellus.

.

  1. sovelluksen täytyy paikantaa etämenetelmä
  2. sen täytyy tarjota kommunikaatio etäobjektien kanssa, ja
  3. sovelluksen täytyy ladata objektien luokkamääritykset.

RMI-sovelluksessa on kaikki nämä ominaisuudet, joten sitä kutsutaan hajautetuksi sovellukseksi.

Java RMI esimerkki

is: lle annetaan 6 askelta RMI-ohjelman kirjoittamiseen.

  1. luo etäliittymä
  2. tarjoa etäliittymän toteutus
  3. kokoa toteutusluokka ja luo tynkä-ja luurankoobjektit rmic-työkalulla
  4. Aloita rekisteripalvelu rmiregistry-työkalulla
  5. luo ja käynnistä etäsovellus
  6. luo ja käynnistä asiakassovellus

RMI-esimerkki

tässä esimerkissä olemme noudattaneet kaikkia 6 vaihetta RMI-sovelluksen luomiseksi ja toteuttamiseksi. Asiakassovellus tarvitsee vain kaksi tiedostoa, etäliittymän ja asiakassovelluksen. Rmi-sovelluksessa sekä asiakas että palvelin ovat vuorovaikutuksessa etäkäyttöliittymän kanssa. Asiakassovellus vetoaa menetelmiin välityspalvelinobjektissa, RMI lähettää pyynnön kauko-ohjattavalle JVM: lle. Palautusarvo lähetetään takaisin proxy-objektiin ja sen jälkeen asiakassovellukseen.

RMI-esimerkki

1) Luo etäliittymä

etäliittymän luomista varten, pidennä etäliittymää ja ilmoita Etäliittymän poikkeaminen kaikilla etäliittymän menetelmillä. Täällä luomme etäliittymää, joka laajentaa Etäliittymää. On olemassa vain yksi menetelmä nimeltä add() ja se ilmoittaa syrjäisen syrjinnän.

2) tarjoavat etäliittymän toteutuksen

nyt tarjoavat etäliittymän toteutuksen. Etärajapinnan toteuttamiseksi on

  • joko laajennettava UnicastRemoteObject-luokkaa,
  • tai käytettävä exportObject () – menetelmää unicastremoteobject-luokasta

jos laajennat UnicastRemoteObject-luokkaa, sinun on määriteltävä rakentaja, joka ilmoittaa syrjäisestä syrjinnästä.

3) Luo tynkä-ja luurankoesineet rmic-työkalulla.

seuraava vaihe on luoda tynkä-ja luurankoesineet RMI-kääntäjän avulla. Rmic-työkalu vetoaa RMI-kääntäjään ja luo tynkä-ja luurankoesineitä.

4) Aloita rekisteripalvelu rmiregistry-työkalulla

aloita rekisteripalvelu rmiregistry-työkalulla. Jos et määritä portin numeroa, se käyttää oletusporttinumeroa. Tässä esimerkissä käytämme porttinumeroa 5000.

5) Luo ja suorita palvelinsovellus

nyt rmi-palvelut on isännöitävä palvelinprosessissa. Nimeämisluokka tarjoaa menetelmät etäkohteen saamiseksi ja tallentamiseksi. Nimeämisluokka tarjoaa 5 menetelmää.

Julkinen staattinen java.rmi.Remote lookup(java.lang.String) heittää java.rmi.NotBoundException, java. net. MalformedURLException, java.rmi.RemoteException; se palauttaa kaukokohteen viitteen.
public static void bind (java.lang.String, java.rmi.Kauko) heittää java.rmi.Jo havaittu poikkeaminen, java.net.Epämuodostuma, Jaava.rmi.RemoteException; se sitoo kaukokohteen annettuun nimeen.
public static void unbind (java.lang.String) heittää java.rmi.Kauko-ohjaus, java.rmi.NotBoundException, java. net. MalformedURLException; se tuhoaa etäkohteen, joka on sidottu annettuun nimeen.
public static void rebind (java.lang.String, java.rmi.Kauko) heittää java.rmi.RemoteException, java. net. MalformedURLException; se sitoo kaukokohteen uuteen nimeen.
Julkinen staattinen java.lang.String list (java.lang.String) heittää java.rmi.RemoteException, java. net. MalformedURLException; se palauttaa joukon rekisteriin sidottujen etäobjektien nimiä.

tässä esimerkissä sidomme kaukokohteen sonoo-nimellä.

6) Luo ja suorita asiakassovellus

asiakkaalla saamme tynkäobjektin nimeämisluokan lookup () – menetelmällä ja vetoamme menetelmään tässä objektissa. Tässä esimerkissä, olemme käynnissä palvelimen ja asiakkaan sovelluksia, samassa koneessa, joten käytämme localhost. Jos haluat käyttää etäkohdetta toisesta koneesta, vaihda localhost isäntänimeksi (tai IP-osoitteeksi), jossa etäobjekti sijaitsee.

tämän RMI-esimerkin Tuotos

RMIRMI

mielekäs esimerkki RMI-sovelluksesta tietokantoineen

harkitse skenaariota, on kaksi sovellusta käynnissä eri koneissa. Sanotaan MachineA ja MachineB, machineA sijaitsee Yhdysvalloissa ja MachineB Intiassa. MachineB haluavat saada listan kaikista asiakkaista MachineA sovellus.

kehitetään RMI-sovellusta seuraamalla vaiheita.

1) Luo taulukko

ensinnäkin on luotava taulukko tietokantaan. Tässä, käytämme Oracle10-tietokantaa.

RMI-sovellus, jossa tietokanta

2) Luo Asiakasluokka ja etäliittymä

tiedosto: asiakas.java

Huom: Asiakasluokan on oltava sarjamuotoinen.

Tiedosto: Pankki.java

3) Luo luokka, joka tarjoaa Etäliittymän

toteutuksen tiedosto: BankImpl.java

4) kokoaa luokan rmic-työkalu ja käynnistä rekisteripalvelu rmiregistry-työkalulla

RMI-esimerkki tietokannalla

5) Luo ja suorita palvelin

tiedosto: MyServer.javaesimerkki etämenetelmän kutsumisesta

6) Luo ja suorita asiakas

tiedosto: MyClient.javareaalimaailman esimerkki rmi