PA165/Cvičení Remoting: Porovnání verzí

Z FI WIKI
Přejít na: navigace, hledání
(JavaRMI)
Řádka 17: Řádka 17:
 
</java>
 
</java>
  
Vytvořte si projekt, přidejte k němu tento JAR a vytvořte klienta:
 
  
<java>
+
==== Server ====
package cz.muni.fi.pa165.rmi;
+
 
+
import java.rmi.registry.Registry;
+
import java.rmi.registry.LocateRegistry;
+
import java.rmi.RemoteException;
+
import java.rmi.NotBoundException;
+
 
+
public class Pisalek {
+
 
+
    public static void main(String[] args) throws RemoteException, NotBoundException {
+
        if(args.length!=2) {
+
            System.out.println("Usage: java "+Pisalek.class.getName()+" host text");
+
            System.exit(1);
+
        }
+
        String host = args[0];
+
        String text = args[1];
+
 
+
        Registry remregistry = LocateRegistry.getRegistry(host);
+
        Tabule tabule = (Tabule) remregistry.lookup("tabule");
+
 
+
        tabule.zverejni(text);
+
    }
+
}
+
</java>
+
  
 
Na straně serveru je třeba spustit program '''rmiregistry''' a mít implementaci (tohle nedělejte na svém stroji):
 
Na straně serveru je třeba spustit program '''rmiregistry''' a mít implementaci (tohle nedělejte na svém stroji):
Řádka 74: Řádka 49:
 
která musí být spuštěna se správnými parametry:
 
která musí být spuštěna se správnými parametry:
 
  <nowiki>java -Djava.rmi.server.codebase=http://acrab.ics.muni.cz/~makub/rmi/tabule.jar -cp .  cz.muni.fi.pa165.rmi.TabuleImpl</nowiki>
 
  <nowiki>java -Djava.rmi.server.codebase=http://acrab.ics.muni.cz/~makub/rmi/tabule.jar -cp .  cz.muni.fi.pa165.rmi.TabuleImpl</nowiki>
 +
 +
==== Klient ====
 +
 +
Vytvořte si projekt, přidejte k němu JAR s rozhraním a vytvořte klienta:
 +
 +
<java>
 +
package cz.muni.fi.pa165.rmi;
 +
 +
import java.rmi.registry.Registry;
 +
import java.rmi.registry.LocateRegistry;
 +
import java.rmi.RemoteException;
 +
import java.rmi.NotBoundException;
 +
 +
public class Pisalek {
 +
 +
    public static void main(String[] args) throws RemoteException, NotBoundException {
 +
        if(args.length!=2) {
 +
            System.out.println("Usage: java "+Pisalek.class.getName()+" host text");
 +
            System.exit(1);
 +
        }
 +
        String host = args[0];
 +
        String text = args[1];
 +
 +
        Registry remregistry = LocateRegistry.getRegistry(host);
 +
        Tabule tabule = (Tabule) remregistry.lookup("tabule");
 +
 +
        tabule.zverejni(text);
 +
    }
 +
}
 +
</java>
 +
 +
Klienta spusťte se správnými parametry.

Verze z 5. 11. 2009, 17:59

JavaRMI

Nejdřív si předvedeme JavaRMI.

Na tabule.jar je JAR soubor s následující definicí:

 
package cz.muni.fi.pa165.rmi;
 
import java.rmi.Remote;
import java.rmi.RemoteException;
 
public interface Tabule extends Remote {
 
    void zverejni(String text) throws RemoteException;
    
}


Server

Na straně serveru je třeba spustit program rmiregistry a mít implementaci (tohle nedělejte na svém stroji):

 
package cz.muni.fi.pa165.rmi;
 
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.ServerNotActiveException;
import java.rmi.server.UnicastRemoteObject;
 
public class TabuleImpl implements Tabule {
 
    synchronized public void zverejni(String text) throws RemoteException {
        try {
            System.out.println(UnicastRemoteObject.getClientHost() + ": " + text);
        } catch (ServerNotActiveException e) {
            e.printStackTrace();
        }
    }
 
    public static void main(String[] args) throws RemoteException {
        System.out.println("startuji Tabuli");
        Tabule stub = (Tabule) UnicastRemoteObject.exportObject(new TabuleImpl(), 0);
        LocateRegistry.getRegistry().rebind("tabule", stub);
    }
 
}

která musí být spuštěna se správnými parametry:

java -Djava.rmi.server.codebase=http://acrab.ics.muni.cz/~makub/rmi/tabule.jar -cp .  cz.muni.fi.pa165.rmi.TabuleImpl

Klient

Vytvořte si projekt, přidejte k němu JAR s rozhraním a vytvořte klienta:

 
package cz.muni.fi.pa165.rmi;
 
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;
 
public class Pisalek {
 
    public static void main(String[] args) throws RemoteException, NotBoundException {
        if(args.length!=2) {
            System.out.println("Usage: java "+Pisalek.class.getName()+" host text");
            System.exit(1);
        }
        String host = args[0];
        String text = args[1];
 
        Registry remregistry = LocateRegistry.getRegistry(host);
        Tabule tabule = (Tabule) remregistry.lookup("tabule");
 
        tabule.zverejni(text);
    }
}

Klienta spusťte se správnými parametry.