Details zur Webanwendung 'Auktion'

Die Webanwendung 'Auktion' besteht aus mehreren Komponenten, die in der folgenden Abbildung veranschaulicht werden. Das vorliegende Dokument ist kein Lernprogramm über die Erstellung der gesamten Anwendung. Es streicht vielmehr wichtige Punkte bei der Entwicklung und Konzeption heraus, an denen die verschiedenen im Lieferumfang der Workbench enthaltenen Tools eingesetzt werden. Diese Erkenntnisse können Sie auf Ihre eigenen Webanwendungen übertragen.

Diese Abbildung zeigt die Beziehungen zwischen Daten, Geschäftslogik, Webinhalten und Tools.
Die obige Abbildung zeigt, dass die Webinhalte parallel zu den Daten und der Geschäftslogik entwickelt wurden. Während die Web-Designer die Darstellung und das Layout der Webseiten entwickelten, codierten die Java- und Web-Service-Entwickler die für den Einsatz dieser Seiten erforderliche Geschäftslogik. In den folgenden Abschnitten wird beschrieben, wie diese Schlüsselkomponenten erstellt wurden und welchen Beitrag sie zur Webanwendung 'Auktion' leisten:
  1. Mit dem EJB-Zuordnungseditor Entity-Beans zu Datenbanktabellen zuordnen
  2. Mit Hilfe des Assistenten für Session-Bean-Fassaden eine Sitzungsfassade mit SDO-Datenobjekten generieren
  3. Mit Web Site Designer das Layout der Website definieren
  4. Mit Page Designer Webseitenschablonen erstellen
  5. Mit Page Designer Komponenten von JavaServer Faces zu JSP-Seiten hinzufügen
  6. Web-Service erstellen

Mit dem EJB-Zuordnungseditor Entity-Beans zu Datenbanktabellen zuordnen

Enterprise JavaBeans (EJB) bietet Java-Anwendungen ein bequemes Verfahren für den Zugriff auf Daten in relationalen Datenbanken. Es gibt zwei Verfahren zur Entwicklung von Entity-Beans: BMP (über JavaBeans realisierte Transaktionspersistenz) und CMP (über Container realisierte Transaktionspersistenz). CMP bietet eine größere Flexibilität als BMP, da der EJB-Container alle datenbankspezifischen Aufrufe entsprechend den Anweisungen der Bean ausführt. Standardmäßig generieren die Tools in der Rational-Workbench Entity-Beans per CMP. In einer CMP-Entity-Bean ist kein SQL-Zugriffscode enthalten. Dies gibt Ihnen die Möglichkeit, eine solche Bean auf anderen J2EE-Servern einzusetzen, die verschiedene Datenbanken verwenden, ohne den Code neu erstellen zu müssen.

Es gibt verschiedene Ansätze für die Zuordnung von Objekten zu relationalen Datenbanken, beispielsweise Top-down-, Bottom-up- und Meet-in-the-middle-Zuordnungen. Das Top-down-Verfahren baut auf den vorhandenen Objekten auf. Auf dieser Basis werden bei Bedarf immer detailliertere Ebenen definiert, und abschließend wird die Datenbank entworfen. Beim Bottom-up-Verfahren wird ein vorhandenes Datenbankschema verwendet. Anschließend werden die abhängigen Ebenen entworfen, die die Objekte definieren. Beim Meet-in-the-middle-Verfahren werden eine vorhandene Datenbank und die vorhandenen Objekte verwendet. Anschließend werden die Zwischenebenen entwickelt, um die Objekte mit den entsprechenden Datenbanktabellen abzugleichen.

In der Anwendung 'Auktion' wurden die Entity-EJBs mit einem Bottom-up-Verfahren entwickelt. Die Derby-Datenbank war von Anfang an vorhanden und enthielt Tabellen, die den benötigten EJBs sehr ähnlich waren. Nach dem Herstellen einer Verbindung zur Datenbank mit dem Assistenten 'Datenbankverbindung' wurden mit Hilfe des Assistenten 'EJB-RDB-Zuordnung' EJBs erstellt, die - mit einigen Ausnahmen - Zuordnungen aus mindestens einer Tabelle besaßen. In der folgenden Abbildung werden die in der Anwendung 'Auktion' verwendeten EJBs und die zwischen ihnen bestehenden Beziehungen gezeigt.

Diese Abbildung zeigt die Beziehung zwischen verschiedenen Entity-Beans.

Der Zugriff auf Entity-Beans in der Anwendung 'Auktion' erfolgt nicht direkt über den fernen Client. Alle Anforderungen und Antworten werden von Sitzungsfassaden ausgeführt, und die Beans dienen zum Zugriff auf die Back-End-Daten. Dies ermöglicht einen gemeinsamen serverseitigen Zugriff auf den persistenten Datenspeicher. Im nächsten Abschnitt werden die Sitzungsfassaden ausführlicher besprochen.

Weitere Informationen zur Zuordnung von Entity-Beans finden Sie im Hilfethema 'Bottom-Up-Zuordnung erstellen'.

Mit Hilfe des Assistenten für Session-Bean-Fassaden eine Sitzungsfassade mit SDO-Datenobjekten generieren

Die Sitzungsfassade ist die Schnittstelle zwischen dem Client und dem Back-End, die die Kommunikation mit den SDO-Komponenten und letztlich mit der Datenbank bereitstellt. Eine Sitzungsfassade ist nützlich, wenn der Client Anforderungen sendet, für die die Ausführung mehrerer Objekte erforderlich ist. Wenn diese Anforderungen einzeln an die Objekte gesendet werden, kann das den Datenverkehr im Netz und die Latenzzeit erhöhen. Die Sitzungsfassade fungiert als Puffer zwischen den beiden Endpunkten: Sie nimmt eine allgemeine Anforderung vom Client an und sendet anschließend spezielle Anforderungen an die nötigen Objekte. Dadurch wird der Datenverkehr verringert und die Entwicklung des Clients vereinfacht.

Sobald die Fassade erstellt wurde, können Sie die EJBs auswählen, die sie verwaltet. Wählen Sie dazu im Menü des Tools die Option 'EJBs zuordnen' aus. Die Fassade generiert die nötigen SDO-Komponenten aus den Entity-Beans. In der Anwendung 'Auktion' sind zwei Fassaden enthalten, die auf den beiden folgenden Funktionsgruppen aufbauen:
  • Die Systemfassade dient als Schnittstelle zu den systemspezifischen Back-End-EJBs wie 'Kategorie' und 'Aufgabenbereich'.
  • Die Benutzerfassade bindet benutzerspezifische Daten wie Gebote, Artikel und Aufgabenbereiche ein.

Die Gruppierung der EJBs und die Verwendung von zwei verschiedenen Fassaden führt zu einer Leistungssteigerung, da die Benutzer die Möglichkeit haben, ausschließlich auf die benötigten EJBs zuzugreifen. Die Entity-Beans, die die Funktion der eigentlichen Website steuern, beispielsweise 'Kategorie', werden von der Systemfassade gesteuert.

Die EJBs, auf die eine Fassade verweist, werden nacheinander mit dem Assistenten 'Session-Bean-Facade erstellen' ausgewählt, wie in der folgenden Abbildung gezeigt. Bei Bedarf können mehrere Fassaden auf eine EJB verweisen. Dies war in der Anwendung 'Auktion' nicht der Fall.

Diese Abbildung zeigt die Benutzerschnittstelle des Assistenten 'Session-Bean-Facade erstellen'.

Sie können Zusatzfunktionen hinzufügen, indem Sie Methoden in die Fassaden aufnehmen. In der Benutzerfassade beispielsweise gibt es eine Methode, die eine Liste der Benutzer zurückgibt, und eine andere, die eine Liste der aktiven Benutzer zurückgibt. Auf Basis dieser Methoden könnte der Benutzerfassade eine weitere Methode hinzugefügt werden, die eine Liste aller Benutzer zurückgibt, die als inaktiv markiert sind.

Weitere Informationen zu Sitzungsfassaden finden Sie in der Publikation 'Design Patterns: Session Facade' unter der Adresse: http://java.sun.com./.

Mit Web Site Designer das Layout der Website definieren

Die Sicht 'Navigation' des Tools Web Site Designer stellt eine grafische Darstellung des Layouts der Site bereit. Sie zeigt die einzelnen Seiten und deren hierarchische Anordnung an und ist für die Pflege von Layout und Struktur der Seiten auf der Website von Nutzen. Wenn Sie Seiten im Editor ziehen und übergeben, werden die Navigationssteuerelemente in den Seitenschablonen automatisch aktualisiert. Sie könnten beispielsweise in der Navigationsstruktur von 'Auktion' die Reihenfolge der Navigationsregisterkarten ändern, indem Sie die Seite Verkaufen vor die Seite 'Durchsuchen' verschieben. Web Site Designer generiert die Registerkarten auf allen Seiten automatisch in der richtigen Reihenfolge. Um die Änderungen in der aktiven Anwendung sichtbar zu machen, müssen Sie jede Seite, die die Navigationsschablone verwendet, erneut speichern.

Diese Abbildung zeigt die Auktions-JSPs, die in Web Site Designer angezeigt werden.

Neben der gerade beschriebenen Navigationssicht stellt Web Site Designer eine Detailsicht bereit, die weitere Seitenelemente in einer praktischen, bearbeitbaren Tabelle zusammenfasst, wie in der nachfolgenden Abbildung gezeigt. Dank dieser Tabelle lassen sich Seiteneigenschaften wie Titel, Verfasser und Navigationskennsatz leicht aktualisieren.

Diese Abbildung zeigt die Detailsicht von Web Site Designer.

Weitere Informationen zur Verwaltung des Layouts der Website mit Web Site Designer finden Sie in der Onlinehilfe im Thema 'Websitestruktur erstellen'.

Mit Page Designer Webseitenschablonen erstellen

Die Workbench ist mit einem grafisch orientierten Tool ausgestattet, mit dem Seitenschablonen und die eigentlichen Webseiten entwickelt werden können.

Seitenschablonen sind wiederverwendbare Abschnitte von Inhaltscode, die ein einheitliches Aussehen oder Verhalten bestimmter Bereiche einer Website gewährleisten. Um eine solche einheitliche Darstellung und Funktionsweise zu erreichen, müssen die Webseiten lediglich auf die Schablonen verweisen. Die Verwendung von Schablonen nutzt sowohl dem Benutzer, der ohne großen Aufwand auf der Website navigieren kann, als auch dem Entwickler, der nur den für die jeweilige Seite spezifischen Code schreiben muss.

Darüber hinaus vereinfachen Seitenschablonen die Pflege der Inhalte der Website. Änderungen an der Schablonendatei werden automatisch auf jede Seite übertragen, die auf die Schablone verweist. In der Webanwendung 'Auktion' beispielsweise enthält die Schablone maintemplate.jtpl das allgemeine Layout der Auktionsseiten. Sie können in Page Designer mit der Palette, die das Ziehen und Übergeben von Elementen auf einer Webseite ermöglicht, Webseitenelemente zu der Schablone hinzufügen. Der erforderliche HTML-Code wird automatisch generiert. Auf diese Weise lässt sich die Schablone von 'Auktion' bequem modifizieren, so dass beispielsweise das aktuelle Datum und die aktuelle Uhrzeit in die Fußzeile eingebunden werden.

Die wichtigsten Elemente der Schablone 'Auktion' sind die Navigationssteuerelemente. Die Navigationsleiste der Webanwendung 'Auktion' verwendet zwei Arten von Navigation:
  • Navigationsregisterkarten: Zeigen unterschiedliche Bereiche der Website an.
  • Navigationspfade: Zeigen die Position des Benutzers auf der Website in Textform an. Beispiel: Home > Durchsuchen > Liste.
Diese Abbildung zeigt die auf den Beispielseiten der Webanwendung 'Auktion' angezeigten Navigationsregisterkarten.

Wenn Sie einen Tag einfügen, der die Schablone aufruft, anstatt die Navigation fest zu codieren, können Sie in alle Seiten der Website dieselbe Navigationsleiste einbinden. Der Schablonenzuordnungseditor fügt Verweise auf die Schablone in eine Webseite ein.

In dynamischen Schablonen wird diese Technik noch weiter verfeinert, beispielsweise durch Änderung der Inhalte auf der Webseite entsprechend den Aufgabenbereichen oder Funktionen der Benutzer oder durch Einfügen benutzerspezifischer Informationen in eine Webseite. Im Auktionsbeispiel werden dynamische Schablonen dazu genutzt, exklusiv für die als Administratoren angemeldeten Benutzer Administrationslinks in der Navigationsleiste anzuzeigen und die Schaltfläche 'Anmeldung' nach der erfolgreichen Anmeldung eines Benutzers in 'Abmeldung' umzuwandeln.

Weitere Informationen zum Erstellen von Webseitenschablonen finden Sie im Hilfethema 'Seitenschablone erstellen'.

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

JavaServer Faces (JSF) ist eine Technologie, die die Erstellung von Benutzerschnittstellen für dynamische Webanwendungen unterstützt, die auf einem Anwendungsserver ausgeführt werden. JSF ist eine Sprache mit offenem Standard, die eine JavaServer Faces-Standardtagbibliothek verwendet. Die Tabs werden in den HTML-Code eingefügt, um dynamische Webseiten zu erstellen.

Das JSF-Framework verwaltet den Status von Benutzerschnittstellen über Serveranforderungen hinweg und bietet ein einfaches Entwicklungsmodell zur Verarbeitung serverseitiger Ereignisse, die durch den Client aktiviert werden. Ein JSF-Element kann beispielsweise für verschiedene Ereignisse ein bestimmtes Verhalten wie das Klicken auf eine Schaltfläche besitzen. Page Designer verfügt über integrierte, visuell in der Palette angezeigte Funktionen, die Sie auf die Webseite ziehen und dort übergeben können. Diese so genannten Drag-and-Drop-Funktionen erleichtern die Verwendung von JSF, HTML und anderen Scriptelementen. Dies ist nicht nur bei der Steuerung der Grundfunktionen eines Feldes wie dem Wertetyp eines Textfeldes (Integer, alphanumerisch) nützlich, sondern ermöglicht auch die Einrichtung von Prüfregeln. In Page Designer können die JSF-Steuerelemente an die SDO-Daten gebunden werden, die den einzelnen Seiten zugeordnet sind.

Über die Palette von Page Designer können Sie Zusatzfunktionen zu JSF-Seiten hinzufügen. Sie können beispielsweise auf der Seite mit den Artikeldetails eine Schaltfläche 'Jetzt kaufen' einfügen, um dem Benutzer die Möglichkeit zu geben, den Artikel zu dem vom Verkäufer festgelegten Preis zu erwerben.

Die folgende Abbildung zeigt die JSF-Steuerelemente der Detailseite von 'Auktion'. Für das inputText-Feld 'newbid' gilt die Einschränkung, dass nur ganze Zahlen eingegeben dürfen, da das Markierungsfeld Nur Integer rechts unten in der Abbildung aktiviert ist. Das inputText-Feld besitzt weitere Einstellungen für die Registerkarten 'Prüfung', 'Verhalten' und 'Eingabehilfen', die im Feld 'h:inputText' links unten in der Abbildung definiert sind. Auf der Registerkarte 'Prüfung' werden spezielle Prüfregeln mit Java definiert. Eine gültige Eingabe für das inputText-Feld 'newbid' beispielsweise ist eine ganze Zahl, die ungleich Null, größer als das Startgebot und größer als das aktuelle Gebot plus Eins ist.

Diese Abbildung zeigt die auf der Detailseite von 'Auktion' verwendeten JSF-Steuerelemente.

In der Anwendung 'Auktion' wurde auf der Seite mit den Artikeldetails der folgende Code für das inputText-Feld 'newbid' 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 zur Entwicklung von Faces JSP-Dateien finden Sie im Hilfethema zu JavaServer Faces.

Web-Service erstellen

Der Web-Service wurde parallel zur Webanwendung entwickelt, weil er nicht von der Webanwendung abhängig ist. Der Web-Service ist ein weiteres Mittel für den Zugriff auf die Geschäftslogik. Er enthält nicht den gesamten Funktionsumfang der Webanwendung. Genauere Informationen zu dieser Komponente der Anwendung 'Auktion' finden Sie im Abschnitt über die Web-Services.

Auktion - Projektorganisation

Die Webanwendung 'Auktion' verfügt über eine Reihe von Projekten. Jedes dieser Projekte erfüllt einen bestimmten Zweck. Die folgende Liste enthält eine Beschreibung der einzelnen Projekte und deren Verwendung im Auktionsbeispiel:
  • Das Projekt AuctionV60EAR ist die wichtigste EAR-Datei, die auf dem Anwendungsserver implementiert wird. Dieses Projekt ist für die Laufzeitumgebung erforderlich.
  • Das Projekt AuctionV60EJB enthält die EJBs und die Fassadenklassen.
  • Das Projekt AuctionV60EJBClient enthält generierten Code, einschließlich der SDO-Klassen, und wird auf dem Client implementiert.
  • Das Projekt AuctionV60Web enthält alle JSF-Dateien, die Schablone und die Geschäftslogik für die Ausführung der JSF-Dateien.
  • Das Projekt AuctionV60WebService enthält die WSDL-Dateien des Web-Services und den Java-Quellcode für den Web-Service.
  • Das Projekt OIDGenerator und der OIDGenerator-Client sind für die Erstellung der neuen Schlüssel für die Datenbankeinfügungen erforderlich.
Übergeordnetes Thema: Webanwendung 'Auktion'

Rückmeldung