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.