| home | suche | kontakt/johner | institut | hinweise studierende | tech-docs | blog | mindmailer |
![]() |
Server Interface
package rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IMeldeamtServer extends Remote{
boolean pruefeReisePass(Reisepass pass) throws RemoteException;
String verlaengereReisepass(Reisepass pass, int anzahlJahre) throws RemoteException;
int add(int a, int b) throws RemoteException;
}
Server
package rmi;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
import java.rmi.server.UnicastRemoteObject;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MeldeamtServer extends UnicastRemoteObject implements IMeldeamtServer {
private static String URL = "//127.0.0.1/MeldeamtServer";
private static SimpleDateFormat sdf = Reisepass.sdf;
public MeldeamtServer() throws RemoteException {
super();
}
public boolean pruefeReisePass(Reisepass pass) {
try {
Date date = sdf.parse(pass.getGueltigkeitbis());
if (date.after(new Date())) {
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
public String verlaengereReisepass(Reisepass pass, int anzahlJahre) {
pass.verlaengern(anzahlJahre);
return pass.getGueltigkeitbis();
}
public int add(int a, int b) {
return a + b;
}
}
RegistryStarter
package rmi;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RemoteServer;
public class RegistryStarter {
private static String URL = "//127.0.0.1/MeldeamtServer";
public static void main(String[] args) {
try {
IMeldeamtServer server = new MeldeamtServer();
//IMeldeamtServer stub = (IMeldeamtServer) UnicastRemoteObject.exportObject( server, 0 );
System.out.println("Port: " + Registry.REGISTRY_PORT);
LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
Registry registry = LocateRegistry.getRegistry();
registry.rebind(URL, server);
RemoteServer.setLog( System.out );
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
Client
package rmi;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class MeldeamtClient {
private static String URL = "//127.0.0.1/MeldeamtServer";
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry();
IMeldeamtServer server = (IMeldeamtServer)registry.lookup(URL);
System.out.println("Addition : " + server.add(3, 4));
Reisepass pass = new Reisepass("Angela", "Merkel", 2005, 11, 12);
System.out.println("Der Reisepass ist gueltig: " + server.pruefeReisePass(pass));
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}
Klasse Reisepass
Diese Klasse soll illustrieren, wie man zwischen Client und Server auch komplexe Datentypen (Klassen) austauschen kann.
package rmi;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Reisepass implements Serializable{
private String vorname;
private String nachname;
private Date gueltigBis;
public final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public Reisepass(String nachname, String vorname, int jahr, int monat, int tag) {
this.gueltigBis = new GregorianCalendar(jahr, monat-1, tag).getTime();
this.nachname = nachname;
this.vorname = vorname;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public void verlaengern(int jahre) {
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(gueltigBis);
gc.add(Calendar.YEAR, jahre);
gueltigBis = gc.getTime();
}
public String getGueltigkeitbis() {
return sdf.format(gueltigBis.getTime());
}
}
