25.04.2014 Aufrufe

Klausur zur Vorlesung e-Commerce I & II - Lab4Inf

Klausur zur Vorlesung e-Commerce I & II - Lab4Inf

Klausur zur Vorlesung e-Commerce I & II - Lab4Inf

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Klausur</strong> <strong>zur</strong> <strong>Vorlesung</strong><br />

e-<strong>Commerce</strong> I & <strong>II</strong><br />

Prof. Dr. Nikolaus Wulff<br />

3. Juli 2006<br />

Diese <strong>Klausur</strong> besteht aus sieben Aufgaben, von denen Sie<br />

maximal fünf bearbeiten und lösen müssen, d.h. maximal fünf richtig<br />

gelöste Aufgaben entsprechen 100% der Gesamtpunktzahl.<br />

1. Schauen Sie sich daher die Aufgaben zunächst in Ruhe an und<br />

wählen Sie dann die Aufgaben, die Ihnen am leichtesten erscheinen.<br />

2. Sofern Sie mehr als fünf Aufgaben abgeben, werden die fünf<br />

schlechtesten Aufgaben bewertet.<br />

3. Schreiben Sie auf jedes Lösungsblatt Ihren Namen und zu welcher<br />

Aufgabe es gehört. Nummerieren Sie die Lösungsblätter durch.<br />

4. Schreiben Sie leserlich, Hieroglyphen werden nicht gewertet.<br />

5. Kommentieren Sie ihre Programmlistings, so dass klar ist, was Sie<br />

damit bezwecken.<br />

6. Für diese <strong>Klausur</strong> sind keine Hilfsmittel zugelassen.<br />

7. Sie haben 120 Minuten Zeit <strong>zur</strong> Lösung.<br />

Viel Erfolg!<br />

1


Name:<br />

Matrikelnr.:<br />

1 Modulare Web-Site<br />

footer<br />

navigation<br />

content<br />

header<br />

Abbildung 1: Schematisches Template einer Web-Site.<br />

Sie planen eine Web-Site modular aus einzelnen JSP Seiten zusammenzusetzen.<br />

Damit der Auftritt ein einheitliches Layout erhält entscheiden Sie sich<br />

ein zentrales Master JSP-Template mit einem generische Layout wie in Abbildung<br />

(1) zu erstellen. Kontextbezogen sollen dann jeweils passende JSP’s<br />

in dieses Template eingesetzt werden. Die Steuerung welche JSP’s für eine<br />

aktuelle Anfrage angezeigt werden, erfolgt durch ein zentrales Controller-<br />

Servlet, welches die jeweilige Seitensteuerung vornimmt.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 2: layout.jsp: JSP Gerüst des Layout-Templates der Web-Site.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 2


Name:<br />

Matrikelnr.:<br />

Aufgabe<br />

Tip<br />

1. Erstellen Sie ein JSP Master Template, das eine Aufteilung nach Abbildung<br />

(1) realisiert.<br />

2. Verwenden sie die in der Abbildung verwendeten Bezeichner als symbolische<br />

Konstanten zum Einfügen der JSP Seitenteile.<br />

3. Wie realisiert das Controller-Servlet, dass das Master-Template und<br />

hierin die jeweils richtigen JSP Seiten aufgebaut werden?<br />

Eine einfache Strukturierung Ihres Templates ohne CSS erreichen Sie mit<br />

Hilfe der Tags: , , und . Mehrspaltige oder<br />

-zeilige Tabelleneinträge erreichen Sie durch die Verwendung von entsprechenden<br />

Attributen innerhalb ihrer Tags, wie z. B. oder<br />

, relative Größenverhältnisse durch <br />

Denken Sie daran öffnende und schließende Tags zu verwenden. Dynamische<br />

Imports von Seiten können Sie mit Hilfe des Standard Template Library<br />

Tags realisieren. Das JSP Fragment<br />

(2) kann Ihnen als Vorlage und Gerüst dienen.<br />

2 Web-Auktion<br />

Ein Auktionshaus möchte Auktionen online als Web-Auftritt durchführen.<br />

Dies soll mit einer MVC <strong>II</strong> Architektur geschehen. Basistechnologien sollen<br />

JSP’s, Servlets und EJB’s sein, als zentrales Framework wird Struts verwendet.<br />

Aufgabe<br />

1. Welche Klassen repräsentieren Modell, View und den Controller in<br />

dieser Struts basierten Architektur?<br />

2. Wozu dienen die Klassen Action und ActionHandler aus dem Paket<br />

org.apache.struts.action?<br />

3. Erstellen Sie ein prinzipielles UML Diagramm <strong>zur</strong> Visualisierung Ihrer<br />

Architektur.<br />

4. Beschreiben Sie das sequenzielle Zusammenwirken der unterschiedlichen<br />

Instanzen <strong>zur</strong> Beantwortung einer Browseranfrage zum Einstellen<br />

eines Gebots.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 3


Name:<br />

Matrikelnr.:<br />

3 SMS Versand per JMS<br />

Queue<br />

Connection<br />

Factory<br />

Connection<br />

Factory<br />

❅<br />

≪create≫<br />

Topic<br />

Connection<br />

Factory<br />

◗<br />

✑<br />

≪create≫<br />

Connection<br />

◗ Session ✑<br />

❅ ≪create≫<br />

❅<br />

❏✡ ❅<br />

Message<br />

❏✡<br />

Message Destination<br />

Listener<br />

✡❏<br />

❅<br />

send ❅<br />

❏✡<br />

receive ❅❏✡<br />

Message Message<br />

Producer Consumer<br />

❅<br />

Queue<br />

Sender<br />

Topic<br />

Publisher<br />

Abbildung 3: Übersicht einger Abstraktionen aus dem JMS Paket.<br />

Der Betreiber eines Web-Shops möchte es seinen Kunden ermöglichen direkt<br />

auf seiner Site Text einzugeben, der dann an eine ebenfalls einzugebene Telefonnummer<br />

per SMS versandt wird. Der Versand wird zentral von einem<br />

SMSServlet per Java Messaging API vorgenommen. Diese JMS Messages<br />

werden von einer EJB entgegengenommen, welche sich um den weiteren<br />

Versand an einen Telekommunikationsdienstleiter kümmert, deren weiteren<br />

Einzelheiten im Rahmen der <strong>Klausur</strong> nicht von Belang sind.<br />

Aufgabe<br />

1. Welche Art der JMS Kommunikation erscheint Ihnen für diese Aufgabe<br />

am geeignesten, Point-to-Point per Queue- oder Publish-Subscribe per<br />

TopicConnection? Begründen Sie Ihre Antwort.<br />

2. Was für eine EJB würden Sie serverseitig instantiieren, um die JMS<br />

Nachrichten entgegenzunehmen, welche EJB und JMS Schnittstellen<br />

muss diese EJB implementieren?<br />

3. Erstellen Sie ein UML Diagramm, das die Kernabstraktionen Ihrer<br />

Architektur visualisiert.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 4


Name:<br />

Matrikelnr.:<br />

Tip<br />

4. Begründen Sie welchen Typ von JMS Nachrichten Sie für dieses Szenario<br />

verwenden würden?<br />

5. Schreiben Sie ein kurzes Code-Fragment, welches das Verschicken einer<br />

SMS per JMS aus Sicht des JMSServlets erläutert, in dem Sie die Methode<br />

sendJMSMessage(String handyNr, String smsText) als interne<br />

Hilfsmethode des Servlets implementieren.<br />

Das UML Diagramm (3) zeigt Ihnen einige der wichtigsten Kernabstraktion<br />

der JMS Spezifikation. Ein JMS Provider muss die entsprechenden<br />

Schnittstellen implementieren und per ConnectionFactory <strong>zur</strong> Verfügung<br />

stellen. Für die Topic oder Queue Kommunikation gibt es dann Speziallisierungen<br />

wie z. B. Topic-/QueueConnection und Topic-/QueueSession etc.,<br />

die sich jeweils nur in ihrem Prefix unterscheiden. Lediglich die Consumer/Producer<br />

Schnittstellen haben eindeutig unterschiedliche Namen, da<br />

Aufgabe und Verwendungszusammenhang ein anderer sind. Die generische<br />

Signatur der MessageProducer Schnittstelle zum Versenden einer Message<br />

lautet send(Destination dest, Message msg) und wird sowohl für einen<br />

QueueSender als auch einen TopicProducer verwendet. Als Erweiterungen<br />

von Message sieht die JMS Spezifikation die Schnittstellen BytesMessage,<br />

MapMessage, ObjectMessage, StreamMessage und TextMessage vor.<br />

4 Lebensdauer von Web Objekten<br />

Um Daten einer Web Anwendung verwalten zu können gibt es verschiedene<br />

Mechanismen. Was bedeuten im Kontext einer Servlet/JSP Anwendung<br />

• Request Scope<br />

• Session Scope<br />

• Application Scope<br />

• Page Scope?<br />

Welches sind die dazugehörigen Objekte, ihr Gültigkeitsbereich und wie lauten<br />

die entsprechenden Getter/Setter Methoden um Daten zu hinterlegen?<br />

Warum gibt es die HttpServletRequest-Methode<br />

• void setAttribute(StringJSP name, Objekt value)<br />

jedoch keine Methode<br />

• void setParameter(String name, Object value)?<br />

Tip<br />

Bedenken Sie, wie vom Browser per GET/POST-Request Daten an den Server<br />

übermittelt werden und wie Servlets untereinander Daten austauschen.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 5


Name:<br />

Matrikelnr.:<br />

5 User-Tracking<br />

public interface UserMonitoringService extends<br />

javax.ejb.EJBObject {<br />

/** User starts new session. */<br />

void login(String userid) throws RemoteException;<br />

/** Mark user activities within session. */<br />

void renew(String userid) throws RemoteException;<br />

/** User leavs active session. */<br />

void logoff(String userid) throws RemoteException;<br />

}<br />

Abbildung 4: Schnittstelle der UserMonitoringService EJB.<br />

Der Shopbetreiber ”BuyOurProducts.com” möchte monitoren, wie häufig<br />

registrierte Benutzer seine personalisierte Web-Site besuchen. Zwei typische<br />

Fragestellungen in diesem Kontext sind:<br />

1. Besuchshäufigkeit pro Tag, Woche und Monat<br />

2. (Anonymisierte) mittlere Sitzungsdauer der Benutzer<br />

Eine Möglichkeit diese Informationen zu erhalten, ist z. B. die ”access.log”<br />

Datei des Apache Servers nachträglich auszuwerten. Aufgrund des Login-<br />

Szenarios erscheint es Ihnen jedoch einfacher direkt den Login-Prozess als<br />

Auslöser für das Monitoring zu verwenden. Um die eigentliche statistische<br />

Auswertung der Benutzeraktionen brauchen Sie sich in diesem Kontext (und<br />

im Rahmen einer <strong>Klausur</strong>) nicht zu kümmern. Sie dürfen davon ausgehen,<br />

dass dies asynchron in Batch-Läufen mit Hilfe der gesammelten Datenbankdaten<br />

ausgeführt wird.<br />

Aufgabe<br />

Beschreiben Sie, wie sich obige Anforderungen am effizientesten umsetzen<br />

lassen. Da die gesammelten Daten persistent in einer Datenbank gespeichert<br />

werden müssen, planen Sie hierzu einen UserMonitoringService als EJB<br />

zu implementieren. Als zentrale Controllerinstanz Ihrer MVC <strong>II</strong> Architektur<br />

für alle Anfragen der Benutzer dient das BOPServlet, das die Requests an<br />

weitere Businessklassen nach dem Fassaden-Muster delegiert.<br />

1. Welche Art von EJB würden Sie für den UserMonitoringService<br />

verwenden? Begründen Sie Ihre Auswahl.<br />

2. Wie und in welcher Methode erhält das BOPServlet Zugriff auf den<br />

Service? Schreiben Sie ein kurzes Code-Fragment, welches dies erläutert.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 6


Name:<br />

Matrikelnr.:<br />

Tip<br />

3. Schreiben Sie ein kurzes Code-Fragment, welches die Verwendung der<br />

Serviceschnittstelle (4) aus Sicht des BOPServlet erläutert.<br />

Denken Sie daran, was sie alles benötigen, um eine clientseitige Bean zu<br />

instantiieren: einen (Initial)Context, die Home-Schnittstelle und dann die<br />

Bean-Schnittstelle selber. Die Home-Schnittstelle UserMonitoringHome bietet<br />

eine entsprechende UserMonitoringService create() Methode zum<br />

Zugriff auf die Bean an.<br />

Da Sie nicht davon ausgehen können, dass sich Benutzer immer ordnungsgemäß<br />

abmelden, planen Sie alle Anfragen des Benutzers zu protokollieren<br />

und seine Sitzung per renew zu erneuern, somit markiert entweder der<br />

logoff oder der letzte renew Aufruf das Ende der aktuellen Sitzung.<br />

6 Deployment Descriptor(en)<br />

• Welche Arten von Deployment Descriptoren gibt es in einer J2EE Anwendung<br />

und wozu dienen sie?<br />

• Wozu dient ein WAR Archive und was beinhaltet es?<br />

• Wie heißt der Deployment Descriptor einer EJB Anwendung und was<br />

sind seine wesentlichen Inhalte?<br />

• Was sind Struts und Tiles und wie werden diese in eine Applikation<br />

eingebunden?<br />

• Woher weiß der Web-Containter welches Servlet und welche Methode<br />

<strong>zur</strong> Beantwortung eine Benutzeranfrage zu verwenden ist?<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 7


Name:<br />

Matrikelnr.:<br />

7 EJB Vielfalt<br />

Die EJB Spezifikation sieht mittlerweile eine ganze Vielzahl von unterschiedlichen<br />

Bean Typen vor, die jeweils einen speziellen Einsatzzweck erfüllen.<br />

Bringen Sie Licht ins Dunkel, wozu dienen die verschiedenen Enterprise Java<br />

Beans?<br />

Aufgabe<br />

• Was sind stateful und stateless SessionBeans? Wodurch unterscheiden<br />

sich diese und wozu werden sie verwendet?<br />

• Was sind EntityBeans und was ist der Unterschied zwischen CMP und<br />

BMP EntityBeans?<br />

• Wozu werden Message-Driven Beans verwendet?<br />

• Wozu dienen das Home- und das Remote-Interface einer EJB?<br />

• Welche EJB besitzt kein Home-Interface und wie erfolgt der Zugriff<br />

auf eine solche Bean?<br />

• Wie erfolgt die Zuordnung zwischen dem Home-, Remote- und der<br />

Bean-Implementierung innerhalb des EJB-Containers.<br />

WS 2005/ SS 2006 <strong>Klausur</strong> e-<strong>Commerce</strong> I & <strong>II</strong> 8

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!