Blatt 5 - KBS TU

Werbung
Fakultät IV – Elektrotechnik und Informatik
Kommunikations- und Betriebssysteme (KBS)
Dr. G. Mühl, S. Bissell
E-Mail:
WWW:
[email protected]
[email protected]
http://www.kbs.tu-berlin.de
Übung zur Vorlesung „Middleware-Konzepte“ – WS 08/09
Blatt 5
Ausgabe: 27.1.2009 (Besprechung: 10./11.2.2009)
Aufgabe 5.1
In verteilten System ist es oft eine Schwierigkeit global eindeutige Identifier (IDs) zu
erhalten, ohne das sich die einzelnen Komponenten des Systems vorher auf ein
Vergabeschema einigen.
Unter dem Einsatz von JavaSpaces Technologie soll ein Dienst für eindeutige IDs in
verteilten Systemen realisiert werden. Eine Menge von Clients kann Pakete von
eindeutigen IDs anfordern und einer (oder mehrere) ID-Erzeuger stellen dann passende
Pakete mit eindeutigen IDs zur Verfügung.
Benutzen Sie zur Programmierung das Jini Framework der Firma Sun mit der
dazugehörigen JavaSpaces Implementierung und den entsprechenden Lookup and
Discovery Services. Ein ID-Erzeuger beobachtet alle in seiner Reichweite existierenden
oder neu hinzukommenden JavaSpaces, während einem Client ein beliebiger Space
genügt.
Die Clients fordern Pakete mit IDs über Einträge an:
public class IDRequest extends AbstractEntry {
public Integer amount = null;
public IDRequest() {}
public IDRequest(Integer amount) {
this.amount = amount;
}
}
1
Der (oder die) ID-Erzeuger stellen Pakete von IDs mit folgenden Einträgen zur Verfügung:
public class IDList extends AbstractEntry {
public Integer amount = null;
public ArrayList ids = null;
// roughSize can be SIZE_S, SIZE_M or SIZE_L
public String roughSize = null;
public final static String SIZE_S = "small"; // 1-5
public final static String SIZE_M = "medium"; // 5-10
public final static String SIZE_L = "large"; // 10+
public IDList() {}
public IDList(ArrayList ids) {
// TODO sinnvolle Implementierung
}
public ArrayList removeIDs(int num) {
// TODO sinnvolle Implementierung
}
}
2
1. Implementieren Sie die ID-Erzeuger-Klasse IDProvider, die auf Anforderungen
wartet, die in allen erreichbaren JavaSpaces abgelegt werden, diese dann entfernt
und ein passendes ID-Paket in den JavaSpace legt.
2. Implementieren Sie die Client-Klasse IDRequester, die ID-Anforderungen in den
JavaSpace legt und dann nach passenden ID-Paketen sucht.
3. Da die gelieferten ID-Pakete nicht den Clients direkt zugeordnet werden, suchen
diese nach ID-Paketen, die genügend IDs enthalten, entfernen aus diesen die
benötigten IDs und legen sie wieder in den JavaSpace (falls das Paket nicht leer
geworden ist). Vergessen Sie dabei nicht, die Felder amount und roughSize zu
aktualisieren!
4. Warum kann es unvorteilhaft sein, über das Feld amount nach Paketen mit einer
genügenden Anzahl an benötigten IDs zu suchen? Bzw. warum existiert das Feld
roughSize?
5. (optional) Entwickeln Sie eine Methode, mit der das System auch mit mehreren IDErzeugern immer noch global eindeutige IDs liefert.
Hinweise
1. Die Jini Implementierung der Firma Sun kann unter folgender Adresse bezogen
werden: http://java.sun.com/developer/products/jini/index.jsp. Es wird empfohlen,
die Version 1.2 einzusetzen.
2. Gibt es bereits Probleme mit dem LookupBrowser von Sun, so kann dies an einer
fehlenden Multicast-Unterstützung des Betriebssystems liegen. Für Linux, siehe
http://www.bablokb.de/jini/jini.html.
3. Einführungen und Tipps finden Sie unter anderem hier:
o http://www.artima.com/jini/faq.html
o http://jan.netcomp.monash.edu.au/java/jini/tutorial.2.08/Jini.html
o http://www.enete.com/noel/nuggets_jini/index.html
3
Herunterladen