Plants By WebSphere



Erste Schritte
Datenbanktabellen
Quellcode
Codierungshinweise

Erste Schritte

Sie können eine eindeutige E-Mail-Adresse und ein Kennwort für das Beispiel Plants By WebSphere erstellen. Klicken Sie dazu auf der Anmeldeseite auf register for your own account here. Darüber hinaus sind eine Standard-E-Mail-Adresse und ein Standardkennwort für das Beispiel Plants By WebSphere eingerichtet, die Sie in der folgenden Tabelle sehen:


E-Mail-Adresse plants@plantsbywebsphere.ibm.com
Kennwort plants

Datenbanktabellen

Die Datenbanktabellen für dieses Beispiel sind CUSTOMER, INVENTORY, ORDERINFO, ORDERITEM, IDGENERATOR, BACKORDER und SUPPLIER. Diese Tabellen sind in der Datenbank PLANTSDB enthalten. Die Datenbank PLANTSDB ist in der Datei PlantsByWebSphere.ear im Verzeichnis Profilstammverzeichnis/installedApps/Zellenname/PlantsByWebSphere.ear/Database/PLANTSDB enthalten. Zellenname steht für den Namen der Zelle, in der Ihre Anwendung installiert ist.

Sie können das Layout der Tabelle mit den folgenden SQL-Anweisungen anzeigen:


	CREATE TABLE CUSTOMER
  	 (CUSTOMERID VARCHAR(250) NOT NULL,
   	 PASSWORD VARCHAR(250),
   	 FIRSTNAME VARCHAR(250),
   	 LASTNAME VARCHAR(250),
   	 ADDR1 VARCHAR(250),
   	 ADDR2 VARCHAR(250),
   	 ADDRCITY VARCHAR(250),
   	 ADDRSTATE VARCHAR(250),
   	 ADDRZIP VARCHAR(250),
   	 PHONE VARCHAR(250));
ALTER TABLE CUSTOMER ADD CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTOMERID); CREATE TABLE INVENTORY ( INVENTORYID VARCHAR(250) NOT NULL, NAME VARCHAR(250), HEADING VARCHAR(250), DESCRIPTION VARCHAR(250), PKGINFO VARCHAR(250), IMAGE VARCHAR(250), IMGBYTES LONG BIT VARYING, PRICE REAL, COST REAL, CATEGORY INTEGER, QUANTITY INTEGER, NOTES VARCHAR(250), ISPUBLIC INTEGER, MINTHRESHOLD INTEGER NOT NULL, MAXTHRESHOLD INTEGER NOT NULL); ALTER TABLE INVENTORY ADD CONSTRAINT PK_INVENTORY PRIMARY KEY (INVENTORYID); CREATE TABLE ORDER1 ( ORDERID VARCHAR(250) NOT NULL, SELLDATE VARCHAR(250), BILLNAME VARCHAR(250), BILLADDR1 VARCHAR(250), BILLADDR2 VARCHAR(250), BILLCITY VARCHAR(250), BILLSTATE VARCHAR(250), BILLZIP VARCHAR(250), BILLPHONE VARCHAR(250), SHIPNAME VARCHAR(250), SHIPADDR1 VARCHAR(250), SHIPADDR2 VARCHAR(250), SHIPCITY VARCHAR(250), SHIPSTATE VARCHAR(250), SHIPZIP VARCHAR(250), SHIPPHONE VARCHAR(250), CREDITCARD VARCHAR(250), CCNUM VARCHAR(250), CCEXPIREMONTH VARCHAR(250), CCEXPIREYEAR VARCHAR(250), CARDHOLDER VARCHAR(250), SHIPPINGMETHOD INTEGER NOT NULL, PROFIT REAL NOT NULL, CUSTOMERID VARCHAR(250)); ALTER TABLE ORDER1 ADD CONSTRAINT PK_ORDER1 PRIMARY KEY (ORDERID); CREATE TABLE ORDERITEM ( INVENTORYID VARCHAR(250) NOT NULL, NAME VARCHAR(250), PKGINFO VARCHAR(250), PRICE REAL NOT NULL, COST REAL NOT NULL, CATEGORY INTEGER NOT NULL, QUANTITY INTEGER NOT NULL, SELLDATE VARCHAR(250), ORDER_ORDERID VARCHAR(250) NOT NULL); ALTER TABLE ORDERITEM ADD CONSTRAINT PK_ORDERITEM PRIMARY KEY (INVENTORYID, ORDER_ORDERID); CREATE TABLE IDGENERATOR (IDNAME VARCHAR(250) NOT NULL, IDVALUE INTEGER NOT NULL); ALTER TABLE IDGENERATOR ADD CONSTRAINT PK_IDGENERATOR PRIMARY KEY (IDNAME); CREATE TABLE BACKORDER ( BACKORDERID VARCHAR(250) NOT NULL, INVENTORYID VARCHAR(250), QUANTITY INTEGER NOT NULL, STATUS VARCHAR(250), LOWDATE BIGINT NOT NULL, ORDERDATE BIGINT NOT NULL, SUPPLIERORDERID VARCHAR(250) NULL); ALTER TABLE BACKORDER ADD CONSTRAINT PK_BACKORDER PRIMARY KEY (BACKORDERID); CREATE TABLE SUPPLIER ( SUPPLIERID VARCHAR(250) NOT NULL, NAME VARCHAR(250), STREET VARCHAR(250), CITY VARCHAR(250), USSTATE VARCHAR(250), ZIP VARCHAR(250), PHONE VARCHAR(250), URL VARCHAR(250)); ALTER TABLE SUPPLIER ADD CONSTRAINT PK_SUPPLIER PRIMARY KEY (SUPPLIERID);

Quellcode

Der Quellcode befindet sich im folgenden Verzeichnis:
Profilstammverzeichnis/samples/src/PlantsByWebSphere

Anmerkung für z/OS-Benutzer: Die Quellcodestruktur für die Beispiele wird unter z/OS nicht bereitgestellt, weil auf der z/OS-Plattform keine Beispielanwendungen erstellt werden.

Codierungshinweise

Übersicht
Servlets
Enterprise-Beans

Übersicht

Das Beispiel Plants By WebSphere verwendet die folgenden Technologien:

Die Anwendung Plants By WebSphere wird von einer Reihe von JSP- und HTML-Seiten gesteuert. Diese Seiten kommunizieren über die folgenden Servlets: AccountServlet, ShoppingServlet, ImageServlet und AdminServlet. Die Servlets verwenden die Business-Methoden der Enterprise-Beans, die wiederum bei Bedarf auf Daten in der Datenbank zugreifen. Im Allgemeinen wird die Kommunikation mit den Entity-Beans über Stateless-Session-Beans abgewickelt, um die Anzahl der Transaktionen zu verringern.

Servlets

Im folgenden Abschnitt werden die in dieser Anwendung verwendeten Servlets beschrieben.

ShoppingServlet

Das Servlet "ShoppingServlet" verarbeitet den Hauptteil der Interaktionen zwischen Browser und Enterprise-Beans. Zu diesen Interaktionen gehören Bestands-, Einkaufs- und Bestellfunktionen. Wenn Sie eine Einkaufskategorie zur Anzeige auswählen, wird eine Session-Bean Catalog verwendet, die alle relevanten Bestandsobjekte (Inventory) sucht und anzeigt. Für die Anzeige der Einzelheiten zu einem Artikel wird ebenfalls eine Session-Bean Catalog verwendet, die die Informationen von einer CMP-Entity-Bean Inventory abruft.

Wenn Sie dem elektronischen Warenkorb einen Artikel hinzufügen, wird eine Stateful-Session-Bean ShoppingCart erstellt. Eine Session-Bean Catalog ruft die Bestandsdaten ab und speichert den Artikel in der Bean ShoppingCart. Die Anzeige und Aktualisierung des elektronischen Warenkorbs erfolgt über die Stateful-Session-Bean ShoppingCart.

Nach Eingabe der Rechnungs- und Lieferdaten erstellt die Bean ShoppingCart eine neue CMP-Entity-Bean Order. Nach Abschluss der Prüfprozedur wird eine Stateless-Session-Bean Mailer erstellt, die über die JavaMail-API eine E-Mail mit der Bestellbestätigung sendet.

ImageServlet

Das Servlet "ImageServlet" ruft die Produktabbildungen ab und speichert sie in der Datenbank. Es ruft die Abbildungen aus den JSP-Seiten und HTML-Seiten aus der Datenbank ab und stellt sie mit der HTTP-Antwort dem Browser wieder bereit.

AdminServlet

Das Servlet "AdminServlet" verarbeitet die Anforderungen eines Benutzers (Browsers) zum erneuten Eintragen von Werten in die Datenbank.

Bei der Verarbeitung von Anforderungen zum erneuten Füllen der Datenbank von der Seite help.jsp erstellt das Servlet "AdminServlet" eine BMP-Bean mit dem Namen "ResetDB". Diese Bean löscht alle Datenbanktabellen und füllt die Tabellen anschließend erneut mit Anfangsdatenwerten aus einer Eigenschaftendatei mit dem Namen pbw.properties.

Enterprise-Beans

Im folgenden Abschnitt werden die in dieser Anwendung verwendeten Enterprise-Beans beschrieben.

Catalog

Catalog ist eine Stateless-Session-Bean. Über diese Bean wird hauptsächlich auf die CMP-Entity-Bean Inventory zugegriffen. Stateless-Session-Beans greifen im Allgemeinen auf die Daten von Entity-Beans zu und verringern somit die Anzahl der verwendeten Transaktionen. Die Session-Bean Catalog enthält Business-Methoden, um Informationen von einer oder mehreren Inventory-Beans abzurufen. Es sind Methoden zum Hinzufügen und Entfernen von Bestandsartikeln verfügbar. Die Session-Bean Catalog enthält außerdem Methoden zum Ändern vorhandener Inventory-Beans.

Customer

Customer ist eine CMP-Entity-Bean. Sie enthält die für einen Kunden erforderlichen Account-Daten und verwalten diese. Die Entity-Bean Customer enthält Methoden zum Erstellen, Suchen und Aktualisieren von Kundeninformationen sowie zum Überprüfen des Kennworts und zum Abrufen von Feldern aus der Entity-Bean Customer.

Inventory

Inventory ist eine CMP-Entity-Bean. Diese Entity-Bean enthält und verwaltet Daten zu Bestandsartikeln. Es sind Methoden zum Suchen, Erstellen sowie zum Abrufen und Festlegen von Datenfeldern verfügbar.

Login

Login ist eine Stateless-Session-Bean. Diese Session-Bean dient als Schnittstelle zur CMP-Entity-Bean Customer für die Erstellung und Aktualisierung von Kunden-Accounts.

Mailer

Mailer ist eine Stateless-Session-Bean. Diese Session-Bean erstellt und sendet über die JavaMail-API eine E-Mail mit der Auftragsbestätigung.

Order

Order ist eine CMP-Entity-Bean. Diese Session-Bean enthält und verwaltet die Bestelldaten. Es sind Methoden zum Suchen, Erstellen und Abrufen von Datenfeldern verfügbar.

OrderItem ist eine CMP-Entity-Bean. Diese Entity-Bean enthält und verwaltet jeweils einen Bestellartikel. Es sind Methoden zum Suchen, Erstellen und Abrufen von Datenfeldern verfügbar.

ReportGenerator

ReportGenerator ist eine Stateless-Session-Bean. Diese Session-Bean generiert basierend auf den Auftragsinformationen Berichte. Die Session-Bean ReportGenerator dient als Schnittstelle zur CMP-Entity-Bean Order. Der Bericht enthält Informationen zu den am häufigsten in einem bestimmten Zeitraum verkauften Artikeln und zu den Postleitzahlen der Orte, aus denen die meisten Bestellungen in einem bestimmten Zeitraum eingegangen sind.

ShoppingCart

ShoppingCart ist eine Stateful-Session-Bean. Diese Session-Bean verwaltet eine Liste von Verkaufsartikeln in der HTTP-Sitzung. Die Session-Bean ShoppingCart enthält Business-Methoden zum Hinzufügen, Entfernen und Aktualisieren von Bestandsartikeln. Außerdem enthält die Session-Bean ShoppingCart eine Methode, die eine neue CMP-Entity-Bean Order erstellt, sobald der Kunde bereit ist, einen Einkauf abzuschließen.

ResetDB

ResetDB ist eine BMP-Entity-Bean. Diese Entity-Bean löscht alle Zeilen in den Datenbanktabellen.