Java RMI-Introduction

advertenties

RMI staat voor Remote Method Invocation. Het is een mechanisme dat een object in een systeem (JVM) toegang geeft tot een object dat op een andere JVM draait.

RMI wordt gebruikt om gedistribueerde toepassingen te bouwen; het biedt communicatie op afstand tussen Java-programma ‘ s. Het wordt geleverd in het pakket java.rmi.

architectuur van een RMI-toepassing

in een RMI-toepassing schrijven we twee programma ‘ s, een server-programma (dat zich op de server bevindt) en een client-programma (dat zich op de client bevindt).

  • binnen het serverprogramma wordt een object op afstand gemaakt en wordt de referentie van dat object beschikbaar gemaakt voor de client (met behulp van het register).

  • het clientprogramma vraagt de externe objecten op de server aan en probeert de methoden ervan aan te roepen.

het volgende diagram toont de architectuur van een KMI-toepassing.

RMI architectuur

laten we nu de componenten van deze architectuur bespreken.

  • transportlaag – deze laag verbindt de client met de server. Het beheert de bestaande verbinding en stelt ook nieuwe verbindingen op.

  • Stub – een stub is een representatie (proxy) van het object op afstand op de client. Het bevindt zich in het client systeem; het fungeert als een gateway voor het client programma.

  • Skeleton-dit is het object dat zich op de server kant bevindt. stub communiceert met dit skelet om het verzoek door te geven aan het object op afstand.

  • RRL (Remote Reference Layer) – het is de laag die de verwijzingen van de client naar het remote object beheert.

werking van een KMI-toepassing

de volgende punten vatten samen hoe een KMI-toepassing werkt−

  • wanneer de client een oproep doet naar het object op afstand, wordt deze ontvangen door de stub die uiteindelijk dit verzoek doorgeeft aan de RRL.

  • wanneer de client-side RRL het verzoek ontvangt, wordt een methode aangeroepen met de naam aanroepen() van het object remoteRef. Het geeft het verzoek door aan de RRL aan de serverzijde.

  • de RRL aan de serverzijde geeft het verzoek door aan het skelet (proxy op de server) dat uiteindelijk het vereiste object op de server oproept.

  • het resultaat wordt helemaal aan de klant doorgegeven.

ranselen en Unmarshalling

wanneer een client een methode aanroept die parameters op een object op afstand accepteert, worden de parameters gebundeld in een bericht voordat ze over het netwerk worden verzonden. Deze parameters kunnen van primitief type of objecten zijn. In het geval van primitief type worden de parameters samengevoegd en wordt er een header aan bevestigd. In het geval dat de parameters objecten zijn, dan worden ze geserialiseerd. Dit proces staat bekend als marshalling.

aan de serverzijde worden de verpakte parameters ontbundeld en vervolgens wordt de vereiste methode aangeroepen. Dit proces staat bekend als unmarshalling.

RMI-register

RMI-register is een naamruimte waarin alle serverobjecten worden geplaatst. Elke keer dat de server een object maakt, registreert het dit object met de rmiregistry (met behulp van bind () of reBind () methoden). Deze worden geregistreerd met behulp van een unieke naam bekend als bind naam.

om een object op afstand aan te roepen, heeft de client een referentie van dat object nodig. Op dat moment haalt de client het object uit het register met behulp van zijn bindnaam (met behulp van lookup() methode).

de volgende afbeelding legt het hele proces uit –

Registry

doelen van KMI

hieronder volgen de doelen van KMI−

  • om de complexiteit van de toepassing te minimaliseren.
  • om de typeveiligheid te behouden.
  • gedistribueerde afvalinzameling.
  • Minimaliseer het verschil tussen werken met lokale en externe objecten.
advertenties



+