User Tools

Site Tools


tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi [2023/05/04 21:21] kneheztanszek:oktatas:informacios_rendszerek_integralasa:java_rmi [2024/03/26 18:26] (current) knehez
Line 1: Line 1:
 ===== Egyszerű Java-RMI példa ===== ===== Egyszerű Java-RMI példa =====
  
-Használjuk java 11-el kompatibilis módot.+Először is, készítsünk egy interakciós diagramot, ami bemutatja, hogyan kommunikál egymással **Client** és a **RObject** a **RegisterService**-en keresztül:
  
-1.) Definiáljuk az RObject interfészeket, mindkettő implementálja a Remote interfészt+<mermaid> 
 +sequenceDiagram 
 +    participant C as Client 
 +    participant RS as RegisterService 
 +    participant RO as RObject 
 +    participant RMI as RMI Registry
  
 +    RS->>RMI: Register RObject
 +    RMI-->>RS: RObject Registered
 +    C->>RMI: Lookup RObjectServer
 +    RMI-->>C: Return RObject
 +    C->>RO: primitiveArg(2012)
 +    RO-->>C: Acknowledge
 +    C->>RO: argumentByValue(2012)
 +    RO-->>C: Acknowledge
 +</mermaid>
 +
 +Ez a diagram szemlélteti a folyamat lépéseit: a RegisterService regisztrálja az RObject-et az RMI Registry-ben, a Client lekérdezi a távoli objektumot, majd használja annak funkcióit.
 +
 +Most pedig nézzük meg, hogyan néz ki ez a rendszer egy struktúra diagramon, ami bemutatja a komponensek és azok kapcsolatait:
 +
 +<mermaid>
 +graph TD
 +    subgraph "RMI Registry"
 +      RO[RObject Interface]
 +    end
 +
 +    subgraph "Server Side"
 +      ROS[RObjectImpl] -- Implements --> RO
 +    end
 +
 +    subgraph "Client Side"
 +      C[Client] -- Uses --> RO
 +    end
 +
 +    RegisterService -- Registers --> RO
 +    C -- Looks up --> RO
 +    C -- Calls methods on --> ROS
 +</mermaid>
 +
 +A struktúra diagram világosan ábrázolja a rendszer különböző részeit és azok közötti kapcsolatokat:
 +
 +A Server Side rész tartalmazza az **RObjectImpl** implementációt, amely megvalósítja az **RObject** interfészt. Az **RMI Registry** regisztrálja az interfészt, lehetővé téve, hogy a **Client Side**-on lévő **Client** megtalálja és használja azt.
 +A **Client** a távoli objektum (ROS) metódusait hívja meg, ami ábrázolja a két fő műveletet: egy primitív és egy érték szerinti paraméter átadást.
 +
 +**Megvalósítás:**
 +
 +Telepítsük a gradle-t innen: https://gradle.org/releases/
 +A //bin// könyvtárat adjuk hozzá a //PATH//-hoz.
 +
 +A teljes forráskód elérhető itt:
 <code> <code>
 +git clone https://github.com/knehez/isi.git
 +cd java_rmi
 +</code>
 +
 +Nyissunk két terminált, az egyikben:
 +
 +<code>
 +gradle runRegisterService
 +</code>
 +
 +A másikban:
 +<code>
 +gradle run
 +</code>
 +
 +A program részletesen:
 +
 +1.) Definiáljuk az RObject interfészeket, mindkettő implementálja a Remote interfészt
 +
 +<sxh java>
 package org.ait; package org.ait;
 import java.rmi.*; import java.rmi.*;
Line 16: Line 85:
   void argumentByValue(Integer num) throws RemoteException;   void argumentByValue(Integer num) throws RemoteException;
 } }
-</code>  +</sxh>  
  
 2.) Implementáljuk a távoli objektumok kódját 2.) Implementáljuk a távoli objektumok kódját
  
-<code>+<sxh java>
 package org.ait; package org.ait;
 import java.rmi.RemoteException; import java.rmi.RemoteException;
Line 40: Line 109:
       }       }
 } }
-</code>+</sxh>
  
-3.) Indítsuk el az RMI registry-t. Ez egy Java JDK komponens, elindítani a létrehozott projekt /bin könyvtárából kell.+3.) Indítsuk el az RMI registry-t. Ez egy Java JDK komponens, elindítani a létrehozott projekt **/bin** könyvtárából kell.
  
   > rmiregistry.exe      > rmiregistry.exe   
Line 48: Line 117:
 4.) Hozzuk létre egy példányát a távoli objektumnak és kössük hozzá a registry-hez 4.) Hozzuk létre egy példányát a távoli objektumnak és kössük hozzá a registry-hez
  
-<code>+<sxh java>
 package org.ait; package org.ait;
  
Line 67: Line 136:
  }  }
 } }
-</code>+</sxh> 
 + 
 +Indítsuk el a RegisterService-t, ha fut a rmiregistry, csak akkor fog tudni regisztrálni.
  
 5.) Használjuk a távoli objektumot 5.) Használjuk a távoli objektumot
  
-  import java.rmi.Naming; +Indítsuk el az alábbi kódot. 
-   + 
-  public class Client { +<sxh java> 
-      public static void main(String[] args) { +package org.ait; 
-          try { + 
-              // Távoli objektum lekérése a registry-ből +import java.rmi.Naming; 
-              RObject robj = (RObject) Naming + 
-                      .lookup("rmi://localhost:1099/RObjectServer"); +public class Client { 
-   + public static void main(String[] args) { 
-              // Egyszerű argumentum + try { 
-              robj.primitiveArg(2012); + // Távoli objektum lekérése a registry-ből 
-   + RObject robj = (RObject) Naming.lookup("rmi://localhost:1099/RObjectServer"); 
-              // Serilaizált argumentum + 
-              robj.argumentByValue(new Integer(2012)); + // Egyszerű argumentum 
-   + robj.primitiveArg(2012); 
-          } catch (Exception e) { + 
-              e.printStackTrace(); + // Serilaizált argumentum 
-              + robj.argumentByValue(new Integer(2012)); 
-          + 
-      + } catch (Exception e) { 
-  }+ e.printStackTrace(); 
 +
 +
 +
 +} 
 +</sxh>
  
  
tanszek/oktatas/informacios_rendszerek_integralasa/java_rmi.1683235265.txt.gz · Last modified: 2023/05/04 21:21 by knehez