Java Reference
In-Depth Information
// Ein Server-side Proxy kennt den Broker und den
// eigentlichen Server.
private IWetterDienst wetterDienst;
private Broker broker;
public ServersideWetterDienstProxy (Broker broker)
{
System.out.println
("ServersideWetterDienstProxy: instanziiert");
this.broker = broker;
wetterDienst = new WetterDienst();
broker.anmelden ("erfrageWetter", this);
}
// Bearbeite eine Anfragenachricht, die vom Broker kommt.
// Aus der Anfragenachricht wird das Argument des Aufrufs geholt
// und anschliessend die Dienstmethode des Servers aufgerufen.
// Das Ergebnis des Servers wird in eine Antwortnachricht
// verpackt und an den Broker geschickt.
public void bearbeiteAnfrage (byte[] anfrage)
{
Tag tag = auspacken (anfrage);
String wetter = wetterDienst.erfrageWetter (tag);
byte[] antwort = verpacken (anfrage, wetter);
broker.antwortWeiterleiten (antwort);
}
// Packe aus einer Anfragenachricht das Argument des
// Dienstaufrufs aus.
private Tag auspacken (byte[] gepackteNachricht)
{
String string = new String (gepackteNachricht);
String[] entpackteNachricht = string.split (";");
Tag tag = Tag.valueOf (entpackteNachricht[2]);
return tag;
}
// Besorge aus der Anfragenachricht den Clientnamen und
// verpacke diesen zusammen mit dem Ergebniswert
// in eine Antwortnachricht.
private byte[] verpacken (byte[] anfrage, String ergebnis)
{
String[] strings = (new String (anfrage)).split (";");
String clientName = strings[0];
return (clientName + ";" + ergebnis).getBytes();
}
}
Ein Objekt der Klasse Broker leitet eine Anfragenachricht von einem Client-side Pro-
xy weiter. Diese Nachrichten bestehen aus Byte-Arrays. Beim Empfang einer Anfrage
legt der Broker eine Referenz auf den Client-side Proxy mit dessen Namen als
Schlüssel in der Hashmap clientMap ab. Hierzu dient die private Methode er-
mittleClientName() der Klasse Broker , die den Namen des Clients aus der über-
gebenen Anfragenachricht ermittelt. Die private Methode findServer() der Klasse
Broker hat die Aufgabe, den passenden Server zu dem angefragten Dienst zu finden.
Search WWH ::




Custom Search