Skola:spsRMI

Z shasko@student
Revízia z 11:25, 5. december 2012; Matiniero (Diskusia | príspevky)

(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Prejsť na: navigácia, hľadanie

Obsah

Remote Method Invocation

RMI je technológia umožňujúca z jedného virtuálneho stroja (JVM) volať metódy objektov na inom virtuálnom stroji.[1]

"Hello world" príklad [2]

Najprv musíme vytvoriť interface, kde definujeme metódy ktoré budeme pomocou stub triedy volať na servri.

HelloInterface.java
import java.rmi.*;
 
public interface HelloInterface extends Remote{
	public String say() throws RemoteException;
}


Nasleduje serverová implementácia (Impl), všetky argumenty metód musia implementovať Serializable

HelloImpl.java
import java.rmi.*;
import java.rmi.server.*;
 
public class HelloImpl extends UnicastRemoteObject 
 implements HelloInterface {
  private static final long serialVersionUID = 2246055149601754603L;
  private String message;
  public HelloImpl (String msg) throws RemoteException {
  message = msg;
  }
  public String say() throws RemoteException {
  return message;
  }
}


Serverová aplikácia vytvorí novú inštanciu impl triedy na ktorej sa budú volať metódy

HelloServer.java
import java.rmi.Naming;
 
public class HelloServer 
{
  public static void main (String[] argv) 
  {
  try {
  Naming.rebind 
   ("Hello", new HelloImpl ("Hello,From Roseindia.net pvt ltd!"));
  System.out.println 
  ("Server is connected and ready for operation.");
  } 
  catch (Exception e) {
  System.out.println ("Server not connected: " + e);
  }
  }
}


Aplikácia klienta sa pripojí na server a zavolá metódu Say() na servri

HelloClient.java
import java.rmi.Naming;
 
public class HelloClient 
{
  public static void main (String[] argv) {
  try {
    HelloInterface hello =(HelloInterface) Naming.lookup ("//127.0.0.1/Hello");
  System.out.println (hello.say());
  } 
  catch (Exception e){
    System.out.println ("HelloClient exception: " + e);}
  }
}


Kompilácia a spustenie
Terminal
Terminal

Java Beans

Bean je trieda, ktorá implementuje Serializable, má konštruktor s 0 parametrami a k jej inštančným premenným sa pristupuje pomocou getter-ov a setter-ov.[3] Keďže implementuje Serializable, je možné použiť ju ako argument alebo návratovú hodnotu pri vzdialených volaniach prostredníctvom RMI.

Úloha

S využitím RMI a Java Beans implementujte Diffie-Hellmanovu dohodu na symetrickom kľúči medzi klientom a servrom.

Diffie-Hellman

Príklad očakávaného výstupu:

Terminal
Terminal

Riešenie

Eclim workspace zo seminára

Pomôcky

Eclim cheatsheet

Vim cheatsheet

Zdroje

  1. http://cs.wikipedia.org/wiki/Java_remote_method_invocation
  2. http://www.roseindia.net/tutorials/rmi/rmi-helloworld.shtml
  3. http://en.wikipedia.org/wiki/JavaBeans
Osobné nástroje
Menné priestory

Varianty
Zobrazení
Operácie
Navigácia
Škola
LS 2012/2013
ZS 2012/2013
HoneyNet
Nástroje