Details zur Webanwendung 'Auktion'

Das Webanwendungsbeispiel 'Auktion' wurde mit der Software Development Platform (SDP) Version 6 entwickelt. Im Folgenden werden die wichtigsten Bausteine der Webanwendung 'Auktion' (siehe Abbildung) beschrieben.

Die Webanwendung 'Auktion' beinhaltet viele Komponenten. An dieser Stelle ist kein Lernprogramm zum Erstellen der gesamten Beispielanwendung vorgesehen. Die nachfolgenden Erläuterungen sollen vielmehr wichtige Entwicklungs- und Konstruktionsaspekte charakterisieren, die einen optimalen Einsatz verschiedener mit der Workbench gelieferter Tools garantieren. So erhalten Sie neue Einblicke, die Sie auf die Arbeit mit Ihren eigenen Webanwendungen übertragen können.

Wie aus der vorangehenden Abbildung ersichtlich, wurde der Webinhalt parallel zur Daten- und Geschäftslogik entwickelt. Webdesigner haben Darstellung und Layout der Webseiten entwickelt, während die Geschäftslogik für diese Seiten von Java- und Webservice-Entwicklern codiert wurde. In den folgenden Abschnitten wird beschrieben, wie diese Schlüsselkomponenten erstellt wurden und welchen Beitrag diese Komponenten zur Webanwendung 'Auktion' leisten.

  1. Entity-Beans mit dem EJB-Zuordnungseditor zu Datenbanktabellen zuordnen.
  2. Sitzungsfassade mit SDO-Datenobjekten über den Assistenten 'Session-Bean-Fassade' generieren.
  3. Layout der Website mit Web Site Designer definieren.
  4. Webseitenschablonen mit Page Designer erstellen.
  5. JavaServer Faces-Komponenten zu JSP-Seiten mit Page Designer hinzufügen.
  6. Swing-Benutzeroberfläche mit dem Java Visual Editor erstellen.
  7. Webservice erstellen.

Entity-Beans mit dem EJB-Zuordnungseditor zu Datenbanktabellen zuordnen

Enterprise JavaBeans (EJB) erleichtern Java-Anwendungen den Zugriff auf in relationalen Datenbanken gespeicherte Daten. Entity-Beans können mit BMP (bean-managed persistence) oder CMP (container-managed persistence) entwickelt werden. CMP bietet eine größere Flexibilität als BMP, da der EJB-Container bei Verwendung von CMP alle auf Datenbanken bezogenen Aufrufe wie von der Bean gesteuert übernimmt. Standardmäßig werden von den Tools der Rational-Workbench CMP-Entity-Beans generiert. Eine CMP-Entity-Bean enthält keinen SQL-Zugriffscode. Dadurch kann die Bean auf anderen J2EE-Servern, die andere Datenbanken verwenden, implementiert werden, ohne dass dazu der Code neu programmiert werden müsste.

Die Zuordnung von Objekten zu relationalen Datenbanken kann auf unterschiedliche Weise erfolgen: mit dem Top-down-Verfahren, dem Bottom-up-Verfahren oder dem Meet-in-the-Middle-Verfahren. Das Top-down-Verfahren setzt bei den vorhandenen Objekten an, definiert dann, wie erforderlich, zunehmend detailliertere Schichten und schließt mit dem Entwurf der Datenbank ab. Beim Bottom-up-Verfahren wird ein vorhandenes Datenbankschema verwendet, um dann die zugehörigen Schichten zu entwickeln, die die Objekte definieren. Beim Meet-in-the-Middle-Verfahren werden eine vorhandene Datenbank und vorhandene Objekte verwendet und anschließend die Zwischenschichten für die Zuordnung der Objekte zu den entsprechenden Datenbanktabellen entwickelt.

Bei der Auktionsanwendung wurde das Bottom-up-Verfahren für die Entwicklung der Entity-EJBs verwendet. Die Cloudscape-Datenbank war vorhanden und enthielt Tabellen, die den erforderlichen EJBs entsprachen. Nach dem Herstellen einer Verbindung zu der Datenbank mit Hilfe des Assistenten für Datenbankverbindungen haben wir von einigen Ausnahmen abgesehen mit dem Assistenten für EJB-zu-RDB-Zuordnung EJBs erstellt, die eine Zuordnung von mindestens einer Tabelle aufweisen. Die folgende Abbildung veranschaulicht die bei der Auktionsanwendung verwendeten EJBs und die zugehörigen Beziehungen.

Bei der Auktionsanwendung greift der ferne Client nicht direkt auf Entity-Beans zu. Alle Anforderungen und Antworten werden von Sitzungsfassaden bearbeitet. Die Beans werden für den Zugriff auf die Back-End-Daten verwendet. Dies ermöglicht auf der Serverseite einen gemeinsamen Zugriff auf den persistenten Datenspeicher. Im folgenden Abschnitt finden Sie nähere Erläuterungen zu Sitzungsfassaden.

Weitere Informationen zur Zuordnung von Entity-Beans können Sie dem Hilfethema Bottom-up-Zuordnung generieren entnehmen.

Sitzungsfassade mit SDO-Datenobjekten über den Assistenten 'Session-Bean-Fassade' generieren

Die Sitzungsfassade stellt die Schnittstelle zwischen dem Client und der Back-End-Einrichtung dar, die den Datenaustausch mit den SDO-Komponenten (Service Data Object) und letztendlich der Datenbank ermöglicht. Eine Sitzungsfassade ist sinnvoll, wenn vom Client Anforderungen gesendet werden, für die mehrere Objekte ausgeführt werden müssen. Ein separates Senden dieser Anforderungen an die einzelnen Objekte könnte Datenverkehr und Latenzzeit im Netz beeinträchtigen. Die Sitzungsfassade verhält sich wie ein zwischengelagerter Puffer: Sie empfängt eine allgemeine Anforderung vom Client und sendet die entsprechenden Anforderungen gezielt an die erforderlichen Objekte. Dies ermöglicht eine Verringerung des Datenverkehrs und vereinfacht die Entwicklung des Clients.

Nach dem Erstellen der Fassade können Sie die von der Fassade verwalteten EJBs auswählen, indem Sie im Menü des Tools EJBs zuordnen auswählen. Daraufhin generiert die Fassade über die Entity-Beans die erforderlichen SDO-Komponenten. Die Auktionsanwendung beinhaltet zwei Fassaden, die anhand der folgenden Gruppierungen konzipiert wurden:

  • Bei der Systemfassade handelt es sich um eine Schnittstelle zu den systemspezifischen Back-End-EJBs, z. B. Kategorie und Rolle.
  • Die Benutzerfassade ist für benutzerspezifische Daten wie Angebot, Artikel und Rolle vorgesehen.

Durch die Gruppierung der EJBs und die Verwendung von zwei unterschiedlichen Fassaden können Sie die Anwendung entlasten, da die Benutzer nur noch auf die EJBs zugreifen, die sie benötigen. Die Entity-Beans, die die Funktionsweise der Website selbst steuern, z. B. Kategorie, werden von der Systemfassade gesteuert.

Die EJBs, auf die von einer Fassade verwiesen wird, werden mit Hilfe des Assistenten zum Erstellen einer Session-Bean-Fassade einzeln nacheinander ausgewählt (siehe Abbildung). Auf ein EJB können falls erforderlich auch mehrere Fassaden verweisen. Dies ist in der Auktionsanwendung jedoch nicht der Fall.

Sie können weitere Funktionen hinzufügen, indem Sie Methoden zu den Fassaden hinzufügen. Die Benutzerfassade umfasst z. B. eine Methode, die eine Liste aller Benutzer zurückgibt, und eine andere Methode, die eine Liste der aktiven Benutzer zurückgibt. Mit diesen Methoden als Beispiel könnte bei Bedarf eine weitere Methode zur Benutzerfassade hinzugefügt werden, die eine Liste der Benutzer zurückgibt, die als inaktiv markiert sind.

Weitere Informationen zu Sitzungsfassaden können Sie der Veröffentlichung "Design Patterns: Session Facade" unter java.sun.com entnehmen.

Layout der Website mit Web Site Designer definieren

Die Navigationssicht des Tools 'Web Site Designer' bietet eine grafische Übersicht zum Aufbau der Website. In dieser Sicht werden die einzelnen Seiten und die hierarchische Ordnung dieser Seiten angezeigt. Dies erleichtert Ihnen die Verwaltung von Layout und Organisation der Seiten innerhalb der Website. Wenn Sie Seiten per Drag-and-drop im Editor verschieben, werden die Navigationssteuerelemente in den Seitenschablonen automatisch aktualisiert. Sie können beispielsweise bei der nachfolgend abgebildeten Navigationsstruktur für die Auktionsanwendung die Reihenfolge der Navigationsregisterkarten ändern, indem Sie die Seite Verkaufen (Sell) vor die Seite 'Durchsuchen' (Browse) setzen. Web Site Designer generiert daraufhin automatisch bei den Registerkarten auf allen Seiten die richtige Reihenfolge. Diese Änderungen können Sie auch in der aktiven Anwendung sichtbar machen, indem Sie alle Seiten, die die Navigationsschablone verwenden, erneut speichern.

Zusätzlich zu der hier beschriebenen Navigationssicht stellt Web Site Designer auch eine Detailsicht bereit, die die weiteren Seitenelemente in einer übersichtlichen, editierbaren Tabelle präsentiert (siehe Abbildung). Diese Tabelle vereinfacht das Aktualisieren von Seiteneigenschaften wie Titel, Autor und Navigationskennsatz.

Weitere Informationen zum Verwalten des Website-Layouts mit Web Site Designer können Sie dem Abschnitt Website-Struktur erstellen der Onlinehilfe entnehmen.

Webseitenschablonen mit Page Designer erstellen

Die Workbench beinhaltet ein grafisches Entwicklungsprogramm für das Entwickeln von Seitenschablonen und Webseiten.

Seitenschablonen stellen wiederverwendbare Teile von Inhaltscode dar, mit denen bei den verschiedenen Bereichen einer Website eine einheitliche Darstellung bzw. Funktionsweise erzielt werden kann. Um diese Einheitlichkeit zu erreichen, müssen die Webseiten lediglich auf die entsprechenden Schablonen verweisen. Vom Einsatz der Schablonen profitieren die Benutzer, die in der Website problemlos navigieren können, ebenso wie die Entwickler, die nur den für die jeweiligen Seiten spezifischen Code programmieren müssen.

Seitenschablonen ermöglichen darüber hinaus eine einfache Verwaltung des Website-Inhalts. Änderungen an einer Schablonendatei werden automatisch auf allen Seiten, die auf die betreffende Schablone verweisen, übernommen. Dazu ein Beispiel: Die Schablone 'maintemplate.jtpl' der Webanwendung 'Auktion' liefert das allgemeine Layout der Auktionsseiten. Zu dieser Schablone können Sie über die Palette von Page Designer Webseitenelemente hinzufügen, indem Sie die betreffenden Elemente per Drag-and-drop auf die Webseite verschieben. Der erforderliche HTML-Code wird automatisch generiert. Die Auktionsschablone kann auf diese Weise beispielsweise problemlos so geändert werden, dass sie das aktuelle Datum mit Uhrzeit in die Fußzeile aufnimmt.

Die Schlüsselelemente der Auktionsschablone sind die Steuerelemente für die Navigation. Die Navigationsleiste der Webanwendung 'Auktion' sieht zwei Navigationsvarianten vor:

  • Navigationsregisterkarten: Zeigen Bereiche der Website an.
  • Navigationspfade ("Bread Crumbs"): Zeigen dem Benutzer durch entsprechenden Text an, an welchem Punkt der Website er sich befindet (z. B. Home > Durchsuchen > Liste).

Durch das Einfügen eines Tags, das die entsprechende Schablone aufruft, können Sie alle Seiten der Website mit derselben Navigationsleiste ausrüsten, ohne die Navigation dazu auf allen Seiten fest codieren zu müssen. Die Verweise zu der Schablone können Sie mit dem Editor für Schablonenzuordnung auf den Webseiten einfügen.

Mit dynamischen Schablonen eröffnen sich in diesem Bereich weitere Perspektiven. Sie können beispielsweise dafür sorgen, dass sich der Inhalt von Webseiten je nach Rolle oder Zugriffsmöglichkeiten der Benutzer ändert oder dass benutzerspezifische Informationen auf einer Webseite eingefügt werden. Die Auktionsanwendung stellt mit Hilfe dynamischer Schablonen sicher, dass die Verwaltungslinks der Navigationsleiste nur den als Administratoren angemeldeten Benutzer angezeigt werden und dass statt der Registerkarte "Anmeldung" nach der Anmeldung eines Benutzers die Registerkarte "Abmeldung" angezeigt wird.

Weitere Informationen zum Erstellen von Webseitenschablonen können Sie dem Hilfethema Seitenschablone erstellen entnehmen.

JavaServer Faces-Komponenten mit Page Designer zu JSP-Dateien hinzufügen

Bei JSF (JavaServer Faces) handelt es sich um eine Technologie, die das Erstellen von Benutzeroberflächen für dynamische, auf einem Anwendungsserver ausgeführte Webanwendungen erleichtert. JSF ist eine auf offenen Standards basierende Sprache und verwendet eine JSF-Standard-Tagbibliothek. Die Tags werden in den HTML-Code eingefügt, um dynamische Webseiten zu erstellen.

Das JSF-Framework verwaltet die Benutzeroberflächenstatus den Serveranforderungen entsprechend und bietet ein einfaches Entwicklungsmodell für die Handhabung von serverseitigen Ereignissen, die vom Client aktiviert werden. Ein JSF kann beispielsweise, ähnlich dem Klicken auf eine Schaltfläche, ein unterschiedliches Verhalten bei unterschiedlichen Ereignissen annehmen. Page Designer verfügt über integrierte, auf einer Palette präsentierte Funktionen, die Sie auf eine Webseite ziehen können. Diese Drag-and-drop-Funktionen erleichtern das Verwenden von JSF-, HTML- und anderen Elementen für Scripterstellung. Dies ist nicht nur für die Steuerung der Basisfunktionen eines Feldes, z. B. den Werttyp eines Textfeldes (Integer, alphanumerisch), hilfreich, sondern ermöglicht auch das Definieren von Regeln zur Gültigkeitsprüfung. In Page Designer können die JSF-Steuerelemente an die den einzelnen Seiten zugeordneten SDO-Daten gebunden werden.

Die Palette von Page Designer kann zum Hinzufügen zusätzlicher Funktionen zu JSF-Seiten verwendet werden. So kann beispielsweise auf der Seite mit den Artikeldetails die Schaltfläche "Jetzt kaufen" hinzugefügt werden, damit Benutzer den betreffenden Artikel gegebenenfalls zu dem vom Verkäufer für den Artikel vorgesehenen Preis kaufen können.

Die folgende Abbildung zeigt die JSF-Steuerelemente für die Seite mit den Auktionsdetails. Wie in der unteren rechten Ecke der Abbildung zu sehen, ist das inputText-Feld für neue Gebote über das Markierungsfeld Nur ganze Zahlen (Integer only) so eingerichtet, dass nur ganze Zahlen akzeptiert werden. Dem inputText-Feld sind darüber hinaus Einstellungen für Gültigkeitsprüfung, Funktionsweise und Zugriffsmöglichkeiten zugewiesen, die über die Registerkarten (unter h:inputText) in der unteren linken Ecke der Abbildung definiert sind. Über die Registerkarte für Gültigkeitsprüfung können bestimmte Prüfregeln mit Java definiert werden. Eine gültige Eingabe für das inputText-Feld für ein neues Gebot ist beispielsweise eine ganze Zahl, die ungleich null ist, größer ist als das Startgebot und das aktuelle Gebot mindestens um den Wert 1 übersteigt.

Für das inputText-Feld für neue Gebote (newbid), das auf der Seite für Artikeldetails der Auktionsanwendung angezeigt wird, wurde der nachfolgende Code generiert:

<h:inputText styleClass="inputText" id="newbid" required="true" size="14">
    <f:convertNumber integerOnly="true" />
    <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ?
        pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid :
        pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}">
    </f:validateLongRange>
</h:inputText>
		

Weitere Informationen zum Entwickeln von Faces-JSP-Dateien können Sie dem Hilfethema JavaServer Faces entnehmen.

Swing-Benutzeroberfläche mit dem Java Visual Editor erstellen

Die Auktionsanwendung beinhaltet neben den Webseiten auch einen Java-Swing-Client, der Administratoren die Verwaltung von Benutzerinformationen, z. B. Namen und Kennwörtern, ermöglicht. Durch die Verwendung eines Swing-Clients kann die gesamte Verarbeitung auf der Clientmaschine erfolgen und die bei Webanwendungen übliche Wartezeit somit reduziert werden. Der Benutzerverwaltungsclient verfügt über eine Liste mit allen Benutzern der Anwendung. Der Administrator kann auf die Benutzerdaten zugreifen und benutzerspezifische Attribute verwalten, ohne dabei warten zu müssen, bis die betreffenden Webseiten erneut geladen werden. Darüber hinaus sind die von einem Swing-Client bereitgestellten Oberflächen übersichtlicher und anwendungsorientierter.

Die Swing-Clientanwendung wurde mit dem Java Visual Editor wie unten angegeben entwickelt. Mit dem Visual Editor können Sie Ihre Anwendung grafisch orientiert entwickeln, während der Code automatisch generiert wird. Dadurch entfällt die Notwendigkeit, komplizierten Swing-Code manuell zu programmieren.

Die vorangehende Abbildung zeigt die Benutzerverwaltungsanwendung im Java Visual Editor. Rechts sehen Sie die Sitzungsfassaden. Diese Fassaden verwenden SDO-Objekte für den Zugriff auf die Geschäftslogik. Die durchgezogenen Linien, die die Fassaden mit der Benutzeroberfläche verbinden, sind bestimmten Ereignissen der Benutzeroberfläche zugeordnet. Die gestrichelten Linien geben die an die SDO-Objekte übergebenen Parameter und die von den SDO-Objekten zurückgegebenen Werte an. Diese grafische orientierte Anwendungsentwicklung erfordert weniger Zeit als das Programmieren von kompliziertem Java-Swing-Code und vereinfacht Änderungen an der Benutzeroberfläche.

Die Benutzeroberfläche für die Benutzerverwaltung wurde direkt im Java Visual Editor erstellt. Neue Swing-Komponenten können auf der Palette ausgewählt und zur Anwendung hinzugefügt werden. Alle Komponenten können mit den bereitgestellten Tools, Assistenten, der Feedback-Funktion und den Eigenschaften der Eigenschaftsseite so angepasst werden, bis die gewünschte Darstellung und Funktionsweise erzielt ist. Darüber hinaus können alle Komponenten wie Tabellen und Textfelder, die Inhalte anzeigen können, so gebunden werden, dass sie die von einer Datenquelle bereitgestellten Daten anzeigen.

Nach der Entwicklung muss die Benutzerverwaltungsanwendung auf der Website implementiert werden. Dazu wird die gesamte Anwendung in eine EAR-Datei gepackt und in die Verzeichnisstruktur der Website gestellt. Es werden weitere Scripts und HTML-Ressourcen erstellt, um die Anwendung über WebStart, wie in der Dokumentation zu WebSphere Application Client (im Lieferumfang von WebSphere Application Server enthalten) angegeben, ordnungsgemäß zu implementieren. Ressourcen, die auf der Clientseite ausgeführt werden, werden aus Sicherheitsgründen mit einem Zertifikat versehen. Sobald alle Vorbereitungen, wie in der Dokumentation beschrieben, getroffen sind, kann die Anwendung auf einem Client, der lediglich über einen Browser und Java WebStart verfügen muss, implementiert werden.

Nach dem Erstellen der Komponenten der Webanwendung wird die Webanwendung 'Auktion' implementiert und auf einem Anwendungsserver ausgeführt. In der Beispielsammlung der Webanwendung 'Auktion' sind weitere Komponenten verfügbar.

Weitere Informationen können Sie dem Hilfethema Java mit dem Visual Editor bearbeiten entnehmen.

Webservice erstellen

Der Webservice wurde parallel zur Webanwendung erstellt, da dieser Service nicht von der Webanwendung abhängig ist. Der Webservice stellt eine andere Möglichkeit zum Zugriff auf die Geschäftslogik dar und bietet nicht die Funktionalität der Webanwendung. Im Abschnitt Webservice finden Sie nähere Informationen zu diesem Bestandteil der Auktionsanwendung.