• Keine Ergebnisse gefunden

Vorlesung Verteilte Systeme Übungsblatt 4

N/A
N/A
Protected

Academic year: 2022

Aktie "Vorlesung Verteilte Systeme Übungsblatt 4"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Vorlesung Verteilte Systeme Übungsblatt 4

Aufgabe 1:

Erläutern Sie, was ein Kontext (Context) im Sinne eines Namensdienstes (JNDI) ist. Welche wesentlichen Methoden benötigt eine Klasse, die solch ein Objekt implementiert.

Aufgabe 2:

Welche der folgenden Aussagen sind wahr oder falsch?

a) Bei einem zustandslosen Session-Bean umschließt beim Default- Transaktionsmechanismus eine Transaktion des Containers alle Methodenaufrufe des Beans, die im Rahmen einer Session des Clients mit dem Bean durchgeführt werden.

b) Die Verbindung eines Clients mit einer Instanz eines zustandsbehafteten Session-Beans dauert so lange, bis sie manuell entweder durch ein explizites Entfernen der Session- Bean-Instanz oder z.B. durch Timeout der zugehörigen Session gelöst wird.

c) Ein Container kann zustandslose Session-Beans passivieren, wenn er Hauptspeicher braucht.

d) Eine Methode eines Session-Beans, die mit @PostConstruct annotiert ist, wird aufgerufen, nachdem der Container eine neue Instanz des Beans erzeugt hat.

e) Session Beans, auf die man von entfernt zugreifen können soll, müssen von der Klasse UnicastRemoteObject ableiten.

f) Zustandsbehaftete Session-Beans können auch als Web-Service veröffentlicht werden.

g) Das Setzen des Transaktionsattributwerts auf „Supports“ über einer Methode eines Session Beans bedeutet, dass das Bean eine Client-seitige Transaktion bei Aufruf verlangt.

h) Die @Timeout Annotation wird dazu verwendet, einer Methode eine Timeout-Zeit zuzuordnen, nach der ihr Aufruf abgebrochen wird, wenn der Client den Aufruf nicht bis zu dieser Zeit beendet hat.

i) Die @Stateless Annotation definiert ein zustandsloses Session Bean.

j) Der Container erzeugt von einem zustandslosen Session-Bean genau eine Instanz, die von allen Clients geteilt wird.

Aufgabe 3:

Beschreiben Sie kurz jede der ACID Eigenschaften einer Transaktion mit einem Satz.

Aufgabe 4:

k) Welche Formen von Dependency-Injection unterstützt ein JEE-Container?

l) Wann wird die Dependency-Injection durchgeführt und wie lange kann man sich darauf verlassen, dass die injizierte Resource noch lebt?

Aufgabe 5: (Programmieraufgabe)

Schreiben Sie eine EJB-Komponente, die ein Entity-Bean mit Klassennamen „Contact“

sowie eine zustandsloses Session-Bean „ContactEJB“ enthält. Contact definiert eine Entität Kontakt, die Kontaktinformationen, wie Vorname, Name, Email-Adresse, Adresse, etc. zu einer Person aufnimmt, die in einer Datenbank gespeichert werden können. „ContactEJB“

ist ein zustandsloses Session-Bean, das über ein lokales und entferntes Interface Methoden zum Erzeugen von persistenten Kontakten, zum Löschen und zum Suchen von Kontakten für Clients bereitstellt.

(2)

Vorlesung Verteilte Systeme Musterlösungen zu Übungsblatt 4

Aufgabe 1:

Eine Kontext im Sinne eines Namensdienstes definiert eine Menge von {Namen zu Resource}-Zuordnungen, innerhalb der ein Name eindeutig zu der zugehörigen Resource aufgelöst werden kann. Die Softwareschnittstelle eines solche Kontext bietet einem

Programmierer Methoden zum Anlegen einer Name-Resource-Zuordnung (bind, rebind) und zum Auflösen des Namens (lookup) unter Rückgabe der Resource. Weiter können Namen auch an Resourcen gebunden werden, die wiederum Kontexte (Unterkontext) sind.

Aufgabe 2:

a) Falsch (nur jeweils einen Methodenaufruf) b) Wahr

c) Falsch (Aktivierung / Passivierung gibt es bei zustandsbehafteten Beans) d) Wahr (Programmierer können hier ihr Bean initialisieren)

e) Falsch (Session-Beans selbst sind keine RMI-Objekte)

f) Falsch (Nur zustandslose Beans können als Web-Service veröffentlicht werden)

g) Falsch (sagt nur, dass die Methode einen Client-seitigen Transaktionskontext unterstützt)

h) Falsch (Die Timeout-Zeit wird über den Server konfiguriert. Mit der Annotation wird eine Methode annotiert, die bei einem Timeout aufgerufen werden soll)

i) Wahr

j) Falsch (Er erzeugt so viele Instanzen, wie er für gut befindet – für die Kontrolle der Parallelität und Optimierung der Performanz durch paralleles Abarbeiten von Client- Anfragen)

Aufgabe 3:

Die Atomicity (A) drückt aus, dass die Serie der Operationen in der Transaktion so abläuft, als wäre sie eine unteilbare Operation (alles oder nichts).

Consistency (C) bedeutet, dass das Resourcensystem dabei stets von einem konsistenten Zustand in einen anderen konsistenten Zustand übergeht.

Isolation (I) bedeutet, dass eine Transaktion so abläuft, als gäbe es andere Transaktionen nicht, die sie beeinflussen können.

Durability (D) bedeutet, dass die Änderung, die durch eine Transaktion hervorgerufen wird, dauerhaft ist.

Aufgabe 4:

a) Dependeny Injection (DI) kann über ein Objektfeld, einen Konstruktor oder eine setter()-Methode durchgeführt werden.

b) Die Dependeny-Injection wird vom Container nach der Erzeugung des Objektes, jedoch vor der Benutzung des Objektes (auch vor dem Aufruf von @PostConstruct-Methoden) ausgeführt. Die Lebensdauer der injizierten Resourcen hängt von der Lebensdauer des sie enthaltenen Objektes und vom Kontext ab und ist in der Regel bei Ressourcen (Datenbankzugriff, etc.) an die Dauer des Transaktionskontextes gekoppelt (also bei zustandsbehafteten Beans die Session, bei zustandslosen Beans die Dauer eines Methodenaufrufes).

Aufgabe 5: (10 Pkte)

Eine Lösung für Aufgabe 5) findet sich auf der Webseite.

Referenzen

ÄHNLICHE DOKUMENTE

a) Das UDP-Protokoll ist ein verbindungsorientiertes Protokoll. b) Die Java Socket-Klasse nutzt TCP als Übertragungsprotokoll. c) Bei der UDP-Übertragung werden keine

a) Das UDP-Protokoll ist ein verbindungsorientiertes Protokoll. b) Die Java Socket-Klasse nutzt TCP als Übertragungsprotokoll. c) Bei der UDP-Übertragung werden keine

a) Der schreibende Zugriff auf Objektattribute einer Klasse von verschiedenen Threads aus ist immer unkritisch. b) Der schreibende Zugriff auf lokale Variablen einer

a) Der schreibende Zugriff auf Objektattribute einer Klasse von verschiedenen Threads aus ist immer unkritisch. b) Der schreibende Zugriff auf lokale Variablen einer

a) Eine Klasse beschreibt ein entferntes Objekt, wenn sie das Serializable-Interface implementiert. b) Die Sprache, über die man entfernte Objektschnittstellen bei

a) Eine Klasse beschreibt ein entferntes Objekt, wenn sie das Serializable-Interface implementiert. b) Die Sprache, über die man entfernte Objektschnittstellen bei

a) Bei einem zustandslosen Session-Bean umschließt beim Default- Transaktionsmechanismus eine Transaktion des Containers alle Methodenaufrufe des Beans, die im Rahmen einer

Bei Microservice- basierten Anwendungen kann jede funktionale Komponente (jeder Service) einzeln bedarfsgerecht horizontal skaliert werden.