A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Következő változat | Előző változat | ||
|
tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi [2015/03/03 11:37] 127.0.0.1 külső szerkesztés |
tanszek:oktatas:informacios_rendszerek_integralasa:java_rmi [2023/05/05 15:56] (aktuális) knehez |
||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| ===== Egyszerű Java-RMI példa ===== | ===== Egyszerű Java-RMI példa ===== | ||
| + | |||
| + | 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> | ||
| + | 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 | 1.) Definiáljuk az RObject interfészeket, mindkettő implementálja a Remote interfészt | ||
| - | import java.rmi.*; | + | <code java> |
| - | + | package org.ait; | |
| - | public interface RObject extends Remote { | + | import java.rmi.*; |
| - | // egyszerű paraméterátadás | + | |
| - | void primitiveArg(int num) throws RemoteException; | + | public interface RObject extends Remote { |
| - | + | // egyszerű paraméterátadás | |
| - | // érték szerinti paraméterátadás | + | void primitiveArg(int num) throws RemoteException; |
| - | void argumentByValue(Integer num) throws RemoteException; | + | |
| - | } | + | |
| | | ||
| + | // érték szerinti paraméterátadás | ||
| + | void argumentByValue(Integer num) throws RemoteException; | ||
| + | } | ||
| + | </code> | ||
| 2.) Implementáljuk a távoli objektumok kódját | 2.) Implementáljuk a távoli objektumok kódját | ||
| - | import java.rmi.RemoteException; | + | <code java> |
| - | import java.rmi.server.UnicastRemoteObject; | + | package org.ait; |
| - | + | import java.rmi.RemoteException; | |
| - | public class RObjectImpl extends UnicastRemoteObject implements RObject { | + | import java.rmi.server.UnicastRemoteObject; |
| - | private static final long serialVersionUID = 6350331764929058681L; | + | |
| - | public RObjectImpl() throws RemoteException { | + | public class RObjectImpl extends UnicastRemoteObject implements RObject { |
| - | } | + | private static final long serialVersionUID = 6350331764929058681L; |
| - | + | public RObjectImpl() throws RemoteException { | |
| - | @Override | + | } |
| - | public void primitiveArg(int num) throws RemoteException { | + | |
| - | System.out.println(num); | + | |
| - | } | + | |
| | | ||
| - | @Override | + | @Override |
| - | public void argumentByValue(Integer num) throws RemoteException { | + | public void primitiveArg(int num) throws RemoteException { |
| - | System.out.println(num); | + | System.out.println(num); |
| - | } | + | } |
| - | } | + | |
| + | @Override | ||
| + | public void argumentByValue(Integer num) throws RemoteException { | ||
| + | System.out.println(num); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| 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. | ||
| Sor 41: | Sor 68: | ||
| 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 java.rmi.Naming; | + | <code java> |
| - | + | package org.ait; | |
| - | import org.ait.RObject; | + | |
| - | import org.ait.RObjectImpl; | + | import java.rmi.Naming; |
| - | + | ||
| - | | + | public class RegisterService { |
| - | public class RegisterService { | + | |
| /** | /** | ||
| * @param args | * @param args | ||
| Sor 53: | Sor 79: | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| try { | try { | ||
| - | RObject robj = new RObjectImpl(); | + | RObject robj = new RObjectImpl(); |
| - | Naming.rebind("rmi://localhost:1099/RObjectServer", robj); | + | Naming.rebind("rmi://localhost:1099/RObjectServer", robj); |
| - | System.out.println("Registered..."); | + | System.out.println("Registered..."); |
| - | } catch (Exception e) { | + | } catch (Exception e) { |
| - | e.printStackTrace(); | + | e.printStackTrace(); |
| - | } | + | } |
| } | } | ||
| - | } | + | } |
| + | </code> | ||
| + | |||
| + | 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 { | + | <code 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(); |
| + | ; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </code> | ||