tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi [2023/05/04 21:20] – knehez | tanszek: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 | + | Először is, készítsünk egy interakciós diagramot, ami bemutatja, hogyan kommunikál egymással |
| - | 1.) Definiáljuk az RObject | + | < |
| + | sequenceDiagram | ||
| + | participant C as Client | ||
| + | participant RS as RegisterService | ||
| + | participant RO as RObject | ||
| + | participant RMI as RMI Registry | ||
| + | RS->> | ||
| + | RMI-->> | ||
| + | C->> | ||
| + | RMI-->> | ||
| + | C->> | ||
| + | RO-->> | ||
| + | C->> | ||
| + | RO-->> | ||
| + | </ | ||
| + | |||
| + | Ez a diagram szemlélteti a folyamat lépéseit: a RegisterService regisztrálja az RObject-et az RMI Registry-ben, | ||
| + | |||
| + | Most pedig nézzük meg, hogyan néz ki ez a rendszer egy struktúra diagramon, ami bemutatja a komponensek és azok kapcsolatait: | ||
| + | |||
| + | < | ||
| + | graph TD | ||
| + | subgraph "RMI Registry" | ||
| + | RO[RObject Interface] | ||
| + | end | ||
| + | |||
| + | subgraph " | ||
| + | ROS[RObjectImpl] -- Implements --> RO | ||
| + | end | ||
| + | |||
| + | subgraph " | ||
| + | C[Client] -- Uses --> RO | ||
| + | end | ||
| + | |||
| + | RegisterService -- Registers --> RO | ||
| + | C -- Looks up --> RO | ||
| + | C -- Calls methods on --> ROS | ||
| + | </ | ||
| + | |||
| + | 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, | ||
| + | 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:// | ||
| + | A //bin// könyvtárat adjuk hozzá a // | ||
| + | |||
| + | A teljes forráskód elérhető itt: | ||
| < | < | ||
| + | git clone https:// | ||
| + | cd java_rmi | ||
| + | </ | ||
| + | |||
| + | Nyissunk két terminált, az egyikben: | ||
| + | |||
| + | < | ||
| + | gradle runRegisterService | ||
| + | </ | ||
| + | |||
| + | A másikban: | ||
| + | < | ||
| + | gradle run | ||
| + | </ | ||
| + | |||
| + | A program részletesen: | ||
| + | |||
| + | 1.) Definiáljuk az RObject interfészeket, | ||
| + | |||
| + | <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 |
| > 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 | ||
| - | import | + | < |
| - | + | package | |
| - | import | + | |
| - | import | + | import |
| - | + | ||
| - | | + | public class RegisterService { |
| - | public class RegisterService { | + | |
| /** | /** | ||
| * @param args | * @param args | ||
| Line 60: | Line 128: | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| try { | try { | ||
| - | | + | RObject robj = new RObjectImpl(); |
| - | | + | Naming.rebind(" |
| - | System.out.println(" | + | System.out.println(" |
| - | } catch (Exception e) { | + | } catch (Exception e) { |
| - | | + | e.printStackTrace(); |
| - | } | + | } |
| } | } | ||
| - | | + | } |
| + | </ | ||
| + | |||
| + | Indítsuk el a RegisterService-t, | ||
| 5.) Használjuk a távoli objektumot | 5.) Használjuk a távoli objektumot | ||
| - | | + | 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 | + | |
| - | | + | 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(" | |
| - | // 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(); |
| + | ; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
tanszek/oktatas/informacios_rendszerek_integralasa/java_rmi.1683235220.txt.gz · Last modified: 2023/05/04 21:20 by knehez
