Klausur zur Vorlesung e-Commerce I & II - Lab4Inf
Klausur zur Vorlesung e-Commerce I & II - Lab4Inf
Klausur zur Vorlesung e-Commerce I & II - Lab4Inf
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