Plants by WebSphere



Introduzione
Individuazione delle tabelle database
Individuazione del codice sorgente
Riesame delle note di codifica

Introduzione

È possibile creare un indirizzo e-mail e una password univoci per l'esempio di Plants by WebSphere facendo clic su Registrare il proprio account qui nella pagina Collegamento. Inoltre, un indirizzo e-mail predefinito e una password esistono per l'esempio Plants by WebSphere presentato nella seguente tabella:


Indirizzo e-mail plants@plantsbywebsphere.ibm.com
Password plants

Individuazione delle tabelle database

Le tabelle del database per questo esempio sono CUSTOMER, INVENTORY, ORDERINFO, ORDERITEM, IDGENERATOR, BACKORDER e SUPPLIER. Tali tabelle si trovano nel database PLANTSDB. Il database PLANTSDB si trova nel file PlantsByWebSphere.ear ed è situato nella directory root_profilo/installedApps/nome cella/PlantsByWebSphere.ear/Database/PLANTSDB, dove nome cella indica il nome della cella in cui viene installata l'applicazione.

Visualizzare il layout della tabella nelle seguenti istruzioni SQL:


	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);

Individuazione del codice sorgente

Individuare il codice sorgente nella directory
root_profilo/samples/src/PlantsByWebSphere.

Per i clienti z/OS: La struttura ad albero dei codici sorgente per gli esempi non viene fornita in z/OS, perché le applicazioni di esempio non sono create sulla piattaforma z/OS.

Riesame delle note di codifica

Panoramica
Servlet
Bean enterprise

Panoramica

L'esempio di Plants by WebSphere incorpora le seguenti tecnologie:

L'applicazione Plants by WebSphere è supportata mediante una serie di pagine JSP e HTML. Queste pagine comunicano con i seguenti servlet: AccountServlet, ShoppingServlet, ImageServlet e AdminServlet. I servlet utilizzano i diversi metodi aziendali del bean enterprise, che a loro volta accedono ai dati dal database in base alle necessità. In generale, i bean di sessione senza stato vengono utilizzati per essere interfacciati con i bean di entità, in modo da ridurre il numero delle transazioni.

Servlet

La seguente sezione fornisce informazioni sui servlet utilizzati in questa applicazione.

ShoppingServlet

Il servlet ShoppingServlet elabora la maggior parte delle interazioni tra il browser e i bean enterprise. Questa interazione comprende l'inventario, il carrello d'acquisto e le funzioni relative agli ordini. Selezionando una categoria di acquisto da sfogliare verrà utilizzato un bean di sessione Catalogo per individuare e visualizzare tutti gli oggetti Inventory rilevanti. È inoltre possibile visualizzare i dettagli di un articolo utilizzando un bean di sessione Catalogo per ottenere informazioni da un bean di entità CMP Inventario.

L'aggiunta di un articolo al carrello d'acquisto crea un bean di sessione con stato ShoppingCart. Un bean di sessione Catalogo ottiene i dati Inventario e colloca l'articolo nel bean ShoppingCart. La visualizzazione e l'aggiornamento del carrello d'acquisto viene effettuata utilizzando il bean di sessione ShoppingCart.

Dopo aver immesso le informazioni relative alla spedizione e alla fatturazione, il bean ShoppingCart crea un nuovo bean CMP Order. Al termine della procedura di checkout, viene creato un bean di sessione senza stato Mailer per inviare una e-mail di conferma utilizzando l'API JavaMail.

ImageServlet

Il servlet ImageServlet ottiene e colloca immagini dei prodotti nel database. Il servlet ottiene immagini provenienti dalle pagine JSP e HTML del database e le restituisce al browser tramite la risposta HTTP.

AdminServlet

Il servlet AdminServlet elabora le richieste di ripopolamento del database provenienti da un utente (browser).

Quando si elaborano le richieste di reinserimento dalla pagina help.jsp, il servlet AdminServlet crea un bean BMP (bean-managed persistence) definito ResetDB. Questo bean elimina tutte le tabelle del database e reinserisce le tabelle con i valori di dati iniziali dal file properties pbw.properties.

Bean enterprise

La seguente sezione fornisce informazioni sui bean enterprise utilizzati in questa applicazione.

Catalog

Catalog è un bean di sessione senza stato. Si tratta dell'accesso primario al bean di entità CMP (Container-managed persistance). I bean di sessione senza stato generalmente accedono ai dati dei bean di entità, e contemporaneamente limitano il numero delle transazioni utilizzate. Il bean di sessione Catalog dispone di metodi aziendali per ottenere informazioni da uno o più bean Inventory. I metodi esistono per aggiungere e rimuovere una voce di inventario. Inoltre, il bean di sessione Catalog dispone di metodi per modificare i bean Inventory esistenti.

Customer

Customer è un bean di entità CMP. Contiene e gestisce i dati del cliente necessari. Il bean di entità Customer ha metodi per creare, rilevare e aggiornare le informazioni sul cliente, oltre alla verifica di una password e il reperimento di campi nel bean di entità Customer.

Inventory

Inventory è un bean di entità CMP che contiene e gestisce i dati degli articoli dell'inventario. I metodi sono disponibili per rilevare, creare, reperire e impostare i campi dei dati.

Login

Login è un bean di sessione senza stato che interfaccia con il bean di entità Customer CMP per creare e aggiornare gli account dei clienti.

Mailer

Mailer è un bean di sessione senza stato che crea e invia una e-mail di conferma ordine utilizzando l'API JavaMail.

Order

Order è un bean di entità CMP che contiene e gestisce i dati degli ordini. Sono disponibili metodi per il rilevamento, la creazione e il richiamo dei campi relativi ai dati.

OrderItem è un bean di entità CMP che contiene e gestisce un solo articolo dell'ordine. Sono disponibili metodi per il rilevamento, la creazione e il richiamo dei campi relativi ai dati.

ReportGenerator

ReportGenerator è un bean di sessione senza stato che genera report in base alle informazioni rilevate negli ordini. Il bean di sessione ReportGenerator interfaccia con il bean di entità Order CMP. I report comprendono gli articoli maggiormente venduti e i relativi codici di avviamento postale in un intervallo di date specificato.

ShoppingCart

ShoppingCart è un bean di sessione con stato che conserva un elenco degli articoli inventario da acquistare tramite la sessione HTTP. Il bean di sessione ShoppingCart comprende metodi aziendali per aggiungere, eliminare e aggiornare articoli di inventario, oltre a un metodo per creare un nuovo bean di entità Order CMP quando il cliente è in grado di completare un acquisto.

ResetDB

ResetDB è un bean di entità BMP. Questo bean di entità elimina tutte le righe delle tabelle del database.